Setup
package ‘tidyverse’ was built under R version 3.3.2Loading tidyverse: ggplot2
Loading tidyverse: tibble
Loading tidyverse: tidyr
Loading tidyverse: readr
Loading tidyverse: purrr
Loading tidyverse: dplyr
package ‘ggplot2’ was built under R version 3.3.2package ‘tidyr’ was built under R version 3.3.2Conflicts with tidy packages ------------------------------------------------------------------------------
filter(): dplyr, stats
lag(): dplyr, stats
Attaching package: ‘psych’
The following objects are masked from ‘package:ggplot2’:
%+%, alpha
Attaching package: ‘langcog’
The following object is masked from ‘package:base’:
scale
Attaching package: ‘plotly’
The following object is masked from ‘package:ggplot2’:
last_plot
The following object is masked from ‘package:graphics’:
layout
Attaching package: ‘lubridate’
The following object is masked from ‘package:base’:
date
back to TOC
Data preparation
220 parsing failures.
row col expected actual
301 -- date like %m/%d/%y Jun-07
302 -- date like %m/%d/%y Jun-07
303 -- date like %m/%d/%y Jun-07
304 -- date like %m/%d/%y Jun-07
305 -- date like %m/%d/%y Jun-07
... ... .................. ......
See problems(...) for more details.
80 parsing failures.
row col expected actual
21 -- date like %m/%d/%y Jun-12
22 -- date like %m/%d/%y Jun-12
23 -- date like %m/%d/%y Jun-12
24 -- date like %m/%d/%y Jun-12
25 -- date like %m/%d/%y Jun-12
... ... .................. ......
See problems(...) for more details.
back to TOC
Analysis plan
For all studies we conduct exploratory factor analyses using Pearson correlations to find minimum residual solutions.
For each study, we first examine maximal unrotated and rotated solutions. To determine the maximum number of factors to extract, we use the following rule of thumb: With \(p\) observations per participant, we can extract a maximum of \(k\) factors, where \((p-k)*2 > p+k\), i.e., \(k < p/3\). Thus, with 40 mental capacity items, we can extract a maximum of 13 factors.
To determine how many factors to retain, we use the following preset retention criteria, considering the unrotated maximal solution (unless otherwise noted):
- Each factor must have an eigenvalue >1.0.
- Each factor must individually account for >5% of the total variance in the maximal model.
- After rotation, each factor must be the dominant factor (i.e., the factor with the highest factor loading) for ≥1 mental capacity item.
We then examine and interpret varimax-rotated solutions, extracting only the number of factors that meet these criteria.
Study 1
Study information:
- Design: 2 conditions (beetle, robot), 3-point response scale, “decide what to do” and “have intentions”
- Population: adults
- Date conducted: 2016-07-06 (MTurk)
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
joining character vector and factor, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 4 and the number of components = 4

Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR11 MR9 MR10 MR12 MR13 h2 u2
angry 0.66 0.09 0.03 0.00 -0.02 -0.23 -0.08 -0.13 0.05 0.01 0.04 -0.02 0.21 0.57 0.427
beliefs 0.39 0.45 0.16 -0.06 0.23 -0.06 0.44 0.10 0.03 0.13 -0.14 -0.01 -0.01 0.68 0.323
calm 0.69 -0.07 0.13 -0.08 0.08 -0.04 -0.04 0.10 0.08 0.10 0.08 0.12 0.05 0.56 0.445
choices 0.24 0.22 0.48 0.12 0.25 0.03 -0.20 -0.09 -0.14 -0.19 -0.12 -0.18 0.14 0.59 0.413
communicating -0.02 0.51 0.45 0.11 -0.27 -0.14 -0.19 0.16 -0.01 0.10 -0.08 0.08 -0.11 0.67 0.333
computations -0.48 0.74 0.20 0.00 -0.14 0.01 0.05 0.02 0.05 -0.05 -0.03 0.00 0.08 0.84 0.155
conscious 0.34 0.00 0.42 0.22 0.20 0.07 -0.01 -0.14 0.00 -0.14 -0.15 0.07 0.04 0.45 0.545
depressed 0.74 0.27 -0.08 -0.34 -0.01 0.06 -0.09 -0.16 0.14 -0.04 0.02 0.00 -0.05 0.81 0.191
depth 0.14 0.14 0.46 0.31 -0.06 0.29 0.02 -0.20 -0.05 -0.01 -0.07 0.01 0.05 0.48 0.515
desires 0.64 -0.09 0.14 0.03 0.11 0.07 0.00 0.03 -0.24 0.27 0.11 -0.16 -0.02 0.63 0.370
disrespected 0.65 0.31 -0.18 -0.07 -0.01 0.11 -0.07 -0.13 0.03 0.04 -0.04 0.02 -0.06 0.60 0.403
embarrassed 0.56 0.44 -0.38 0.32 -0.01 -0.04 -0.02 0.18 0.02 -0.14 0.18 0.05 0.01 0.84 0.160
emo_recog 0.27 0.41 0.18 -0.11 0.17 0.04 0.28 0.03 -0.03 -0.17 -0.06 0.16 -0.16 0.49 0.513
fear 0.79 -0.35 0.20 -0.06 -0.24 -0.22 0.12 -0.06 -0.03 -0.08 0.02 -0.02 0.00 0.91 0.087
free_will 0.19 0.17 0.40 0.16 0.36 -0.19 -0.19 -0.12 -0.14 -0.08 0.07 -0.03 0.09 0.51 0.492
goal 0.32 0.16 0.32 0.11 0.13 -0.08 0.18 0.02 -0.10 0.01 0.09 -0.15 0.05 0.35 0.654
guilt 0.67 0.48 -0.38 0.31 -0.03 -0.04 0.00 -0.07 -0.02 0.03 -0.09 -0.02 -0.02 0.93 0.070
happy 0.76 0.20 -0.02 -0.38 0.04 -0.03 -0.15 -0.08 0.05 0.04 -0.08 0.05 -0.01 0.81 0.189
hungry 0.65 -0.64 -0.01 0.15 0.09 0.08 -0.02 0.07 0.00 0.04 0.02 0.01 -0.02 0.89 0.112
intentions 0.05 0.54 0.33 0.00 0.13 -0.20 0.06 0.05 0.08 0.05 0.30 -0.13 -0.05 0.59 0.415
joy 0.77 0.26 -0.10 -0.33 -0.06 0.14 -0.04 0.09 -0.10 0.02 0.05 0.10 0.05 0.84 0.162
love 0.73 0.31 -0.02 -0.19 0.07 0.22 0.04 -0.01 -0.07 0.03 0.01 -0.12 -0.07 0.74 0.262
morality 0.20 0.50 0.20 -0.10 0.04 0.03 0.22 0.10 0.09 -0.02 0.05 -0.15 0.01 0.43 0.570
nauseated 0.67 -0.26 0.16 -0.03 -0.06 0.13 -0.09 0.11 -0.14 0.07 0.02 -0.02 0.05 0.61 0.391
odors 0.50 -0.37 0.20 0.26 0.10 0.19 0.00 0.08 0.03 -0.09 0.06 0.22 0.02 0.61 0.391
pain 0.71 -0.45 0.09 0.12 -0.06 -0.08 -0.09 0.13 0.15 0.10 -0.10 -0.02 0.03 0.81 0.192
personality 0.35 0.42 0.12 -0.14 0.20 0.03 0.19 0.17 -0.11 0.03 -0.12 0.15 0.11 0.50 0.501
pleasure 0.72 -0.10 0.04 -0.12 -0.13 0.23 0.01 0.20 0.01 -0.27 -0.09 -0.13 -0.06 0.76 0.242
pride 0.66 0.41 -0.12 -0.19 0.01 -0.02 0.05 -0.08 0.00 0.06 0.19 0.01 0.12 0.72 0.282
reasoning 0.21 0.30 0.49 0.12 0.11 -0.15 -0.16 -0.08 -0.20 -0.11 0.01 0.22 -0.06 0.56 0.438
recognizing -0.07 0.65 0.47 0.03 -0.19 -0.04 -0.09 0.18 -0.01 0.12 -0.07 0.04 0.03 0.75 0.251
remembering -0.01 0.54 0.44 0.04 -0.08 0.05 -0.14 0.05 -0.04 -0.01 0.04 -0.14 -0.24 0.60 0.396
safe 0.72 -0.27 0.24 0.03 0.10 -0.11 0.12 -0.09 -0.05 0.00 -0.04 0.08 -0.10 0.72 0.283
seeing 0.24 0.03 0.45 0.33 -0.08 0.27 -0.02 -0.15 0.14 -0.02 0.06 -0.01 0.00 0.50 0.498
self_aware 0.36 0.11 0.33 0.09 0.31 -0.14 -0.05 -0.01 0.17 0.10 0.05 0.07 -0.22 0.47 0.529
self_restraint 0.33 0.36 0.20 -0.07 0.23 0.02 0.09 0.07 0.15 -0.06 -0.09 0.03 0.17 0.42 0.582
sounds 0.18 0.09 0.45 0.21 -0.28 0.22 0.06 -0.17 -0.02 0.06 0.18 0.06 0.00 0.48 0.519
temperature 0.21 0.06 0.44 0.28 -0.14 0.35 0.17 -0.18 0.17 0.10 0.11 0.04 0.03 0.58 0.423
thoughts 0.45 0.15 0.31 -0.06 0.36 -0.11 -0.14 0.13 0.21 -0.10 0.04 -0.09 0.00 0.57 0.433
tired 0.71 -0.29 0.20 0.11 -0.07 0.04 -0.03 0.07 0.06 0.07 -0.07 -0.08 0.12 0.69 0.313
com
angry 1.7
beliefs 4.4
calm 1.4
choices 5.1
communicating 3.8
computations 2.1
conscious 4.1
depressed 2.0
depth 3.7
desires 2.2
disrespected 1.9
embarrassed 4.2
emo_recog 5.3
fear 2.1
free_will 5.4
goal 4.9
guilt 3.1
happy 1.8
hungry 2.2
intentions 3.2
joy 1.9
love 1.9
morality 2.8
nauseated 1.8
odors 4.0
pain 2.2
personality 4.9
pleasure 2.0
pride 2.3
reasoning 4.3
recognizing 2.5
remembering 2.8
safe 1.8
seeing 3.9
self_aware 5.2
self_restraint 4.9
sounds 4.4
temperature 5.2
thoughts 4.6
tired 1.8
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR11 MR9 MR10 MR12 MR13
SS loadings 10.58 5.08 3.45 1.31 1.07 0.82 0.73 0.53 0.43 0.41 0.40 0.39 0.34
Proportion Var 0.26 0.13 0.09 0.03 0.03 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Var 0.26 0.39 0.48 0.51 0.54 0.56 0.58 0.59 0.60 0.61 0.62 0.63 0.64
Proportion Explained 0.41 0.20 0.13 0.05 0.04 0.03 0.03 0.02 0.02 0.02 0.02 0.02 0.01
Cumulative Proportion 0.41 0.61 0.75 0.80 0.84 0.87 0.90 0.92 0.94 0.96 0.97 0.99 1.00
Mean item complexity = 3.2
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 338 and the objective function was 2.29
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 196 with the empirical chi square 118.47 with prob < 1
The total number of observations was 200 with MLE Chi Square = 403.84 with prob < 0.008
Tucker Lewis Index of factoring reliability = 0.963
RMSEA index = 0.042 and the 90 % confidence intervals are 0.017 0.042
BIC = -1386.99
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR11 MR9 MR10 MR12
Correlation of scores with factors 0.99 0.98 0.96 0.93 0.87 0.85 0.82 0.80 0.73 0.76 0.75 0.71
Multiple R square of scores with factors 0.98 0.96 0.92 0.86 0.76 0.72 0.67 0.64 0.54 0.57 0.56 0.50
Minimum correlation of possible factor scores 0.96 0.92 0.83 0.72 0.52 0.44 0.34 0.27 0.08 0.15 0.12 0.01
MR13
Correlation of scores with factors 0.68
Multiple R square of scores with factors 0.47
Minimum correlation of possible factor scores -0.07
Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR11 MR9 MR10 MR12 MR13 h2 u2
angry 0.66 0.09 0.03 0.00 -0.02 -0.23 -0.08 -0.13 0.05 0.01 0.04 -0.02 0.21 0.57 0.427
beliefs 0.39 0.45 0.16 -0.06 0.23 -0.06 0.44 0.10 0.03 0.13 -0.14 -0.01 -0.01 0.68 0.323
calm 0.69 -0.07 0.13 -0.08 0.08 -0.04 -0.04 0.10 0.08 0.10 0.08 0.12 0.05 0.56 0.445
choices 0.24 0.22 0.48 0.12 0.25 0.03 -0.20 -0.09 -0.14 -0.19 -0.12 -0.18 0.14 0.59 0.413
communicating -0.02 0.51 0.45 0.11 -0.27 -0.14 -0.19 0.16 -0.01 0.10 -0.08 0.08 -0.11 0.67 0.333
computations -0.48 0.74 0.20 0.00 -0.14 0.01 0.05 0.02 0.05 -0.05 -0.03 0.00 0.08 0.84 0.155
conscious 0.34 0.00 0.42 0.22 0.20 0.07 -0.01 -0.14 0.00 -0.14 -0.15 0.07 0.04 0.45 0.545
depressed 0.74 0.27 -0.08 -0.34 -0.01 0.06 -0.09 -0.16 0.14 -0.04 0.02 0.00 -0.05 0.81 0.191
depth 0.14 0.14 0.46 0.31 -0.06 0.29 0.02 -0.20 -0.05 -0.01 -0.07 0.01 0.05 0.48 0.515
desires 0.64 -0.09 0.14 0.03 0.11 0.07 0.00 0.03 -0.24 0.27 0.11 -0.16 -0.02 0.63 0.370
disrespected 0.65 0.31 -0.18 -0.07 -0.01 0.11 -0.07 -0.13 0.03 0.04 -0.04 0.02 -0.06 0.60 0.403
embarrassed 0.56 0.44 -0.38 0.32 -0.01 -0.04 -0.02 0.18 0.02 -0.14 0.18 0.05 0.01 0.84 0.160
emo_recog 0.27 0.41 0.18 -0.11 0.17 0.04 0.28 0.03 -0.03 -0.17 -0.06 0.16 -0.16 0.49 0.513
fear 0.79 -0.35 0.20 -0.06 -0.24 -0.22 0.12 -0.06 -0.03 -0.08 0.02 -0.02 0.00 0.91 0.087
free_will 0.19 0.17 0.40 0.16 0.36 -0.19 -0.19 -0.12 -0.14 -0.08 0.07 -0.03 0.09 0.51 0.492
goal 0.32 0.16 0.32 0.11 0.13 -0.08 0.18 0.02 -0.10 0.01 0.09 -0.15 0.05 0.35 0.654
guilt 0.67 0.48 -0.38 0.31 -0.03 -0.04 0.00 -0.07 -0.02 0.03 -0.09 -0.02 -0.02 0.93 0.070
happy 0.76 0.20 -0.02 -0.38 0.04 -0.03 -0.15 -0.08 0.05 0.04 -0.08 0.05 -0.01 0.81 0.189
hungry 0.65 -0.64 -0.01 0.15 0.09 0.08 -0.02 0.07 0.00 0.04 0.02 0.01 -0.02 0.89 0.112
intentions 0.05 0.54 0.33 0.00 0.13 -0.20 0.06 0.05 0.08 0.05 0.30 -0.13 -0.05 0.59 0.415
joy 0.77 0.26 -0.10 -0.33 -0.06 0.14 -0.04 0.09 -0.10 0.02 0.05 0.10 0.05 0.84 0.162
love 0.73 0.31 -0.02 -0.19 0.07 0.22 0.04 -0.01 -0.07 0.03 0.01 -0.12 -0.07 0.74 0.262
morality 0.20 0.50 0.20 -0.10 0.04 0.03 0.22 0.10 0.09 -0.02 0.05 -0.15 0.01 0.43 0.570
nauseated 0.67 -0.26 0.16 -0.03 -0.06 0.13 -0.09 0.11 -0.14 0.07 0.02 -0.02 0.05 0.61 0.391
odors 0.50 -0.37 0.20 0.26 0.10 0.19 0.00 0.08 0.03 -0.09 0.06 0.22 0.02 0.61 0.391
pain 0.71 -0.45 0.09 0.12 -0.06 -0.08 -0.09 0.13 0.15 0.10 -0.10 -0.02 0.03 0.81 0.192
personality 0.35 0.42 0.12 -0.14 0.20 0.03 0.19 0.17 -0.11 0.03 -0.12 0.15 0.11 0.50 0.501
pleasure 0.72 -0.10 0.04 -0.12 -0.13 0.23 0.01 0.20 0.01 -0.27 -0.09 -0.13 -0.06 0.76 0.242
pride 0.66 0.41 -0.12 -0.19 0.01 -0.02 0.05 -0.08 0.00 0.06 0.19 0.01 0.12 0.72 0.282
reasoning 0.21 0.30 0.49 0.12 0.11 -0.15 -0.16 -0.08 -0.20 -0.11 0.01 0.22 -0.06 0.56 0.438
recognizing -0.07 0.65 0.47 0.03 -0.19 -0.04 -0.09 0.18 -0.01 0.12 -0.07 0.04 0.03 0.75 0.251
remembering -0.01 0.54 0.44 0.04 -0.08 0.05 -0.14 0.05 -0.04 -0.01 0.04 -0.14 -0.24 0.60 0.396
safe 0.72 -0.27 0.24 0.03 0.10 -0.11 0.12 -0.09 -0.05 0.00 -0.04 0.08 -0.10 0.72 0.283
seeing 0.24 0.03 0.45 0.33 -0.08 0.27 -0.02 -0.15 0.14 -0.02 0.06 -0.01 0.00 0.50 0.498
self_aware 0.36 0.11 0.33 0.09 0.31 -0.14 -0.05 -0.01 0.17 0.10 0.05 0.07 -0.22 0.47 0.529
self_restraint 0.33 0.36 0.20 -0.07 0.23 0.02 0.09 0.07 0.15 -0.06 -0.09 0.03 0.17 0.42 0.582
sounds 0.18 0.09 0.45 0.21 -0.28 0.22 0.06 -0.17 -0.02 0.06 0.18 0.06 0.00 0.48 0.519
temperature 0.21 0.06 0.44 0.28 -0.14 0.35 0.17 -0.18 0.17 0.10 0.11 0.04 0.03 0.58 0.423
thoughts 0.45 0.15 0.31 -0.06 0.36 -0.11 -0.14 0.13 0.21 -0.10 0.04 -0.09 0.00 0.57 0.433
tired 0.71 -0.29 0.20 0.11 -0.07 0.04 -0.03 0.07 0.06 0.07 -0.07 -0.08 0.12 0.69 0.313
com
angry 1.7
beliefs 4.4
calm 1.4
choices 5.1
communicating 3.8
computations 2.1
conscious 4.1
depressed 2.0
depth 3.7
desires 2.2
disrespected 1.9
embarrassed 4.2
emo_recog 5.3
fear 2.1
free_will 5.4
goal 4.9
guilt 3.1
happy 1.8
hungry 2.2
intentions 3.2
joy 1.9
love 1.9
morality 2.8
nauseated 1.8
odors 4.0
pain 2.2
personality 4.9
pleasure 2.0
pride 2.3
reasoning 4.3
recognizing 2.5
remembering 2.8
safe 1.8
seeing 3.9
self_aware 5.2
self_restraint 4.9
sounds 4.4
temperature 5.2
thoughts 4.6
tired 1.8
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR11 MR9 MR10 MR12 MR13
SS loadings 10.58 5.08 3.45 1.31 1.07 0.82 0.73 0.53 0.43 0.41 0.40 0.39 0.34
Proportion Var 0.26 0.13 0.09 0.03 0.03 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Var 0.26 0.39 0.48 0.51 0.54 0.56 0.58 0.59 0.60 0.61 0.62 0.63 0.64
Proportion Explained 0.41 0.20 0.13 0.05 0.04 0.03 0.03 0.02 0.02 0.02 0.02 0.02 0.01
Cumulative Proportion 0.41 0.61 0.75 0.80 0.84 0.87 0.90 0.92 0.94 0.96 0.97 0.99 1.00
Mean item complexity = 3.2
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 338 and the objective function was 2.29
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 196 with the empirical chi square 118.47 with prob < 1
The total number of observations was 200 with MLE Chi Square = 403.84 with prob < 0.008
Tucker Lewis Index of factoring reliability = 0.963
RMSEA index = 0.042 and the 90 % confidence intervals are 0.017 0.042
BIC = -1386.99
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR11 MR9 MR10 MR12
Correlation of scores with factors 0.99 0.98 0.96 0.93 0.87 0.85 0.82 0.80 0.73 0.76 0.75 0.71
Multiple R square of scores with factors 0.98 0.96 0.92 0.86 0.76 0.72 0.67 0.64 0.54 0.57 0.56 0.50
Minimum correlation of possible factor scores 0.96 0.92 0.83 0.72 0.52 0.44 0.34 0.27 0.08 0.15 0.12 0.01
MR13
Correlation of scores with factors 0.68
Multiple R square of scores with factors 0.47
Minimum correlation of possible factor scores -0.07
[1] 4
[1] 4
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d1_all, nfactors = nfactors_d1_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 h2 u2 com
angry 0.40 0.49 0.14 0.15 0.44 0.56 2.3
beliefs -0.02 0.52 0.31 0.06 0.37 0.63 1.7
calm 0.55 0.43 0.15 -0.01 0.51 0.49 2.1
choices 0.09 0.17 0.56 -0.07 0.36 0.64 1.3
communicating -0.32 0.18 0.56 -0.01 0.45 0.55 1.8
computations -0.83 0.09 0.34 0.01 0.81 0.19 1.4
conscious 0.32 0.07 0.50 0.00 0.36 0.64 1.7
depressed 0.30 0.80 0.01 0.03 0.72 0.28 1.3
depth 0.09 -0.04 0.59 0.10 0.37 0.63 1.1
desires 0.54 0.33 0.19 0.06 0.45 0.55 2.0
disrespected 0.24 0.66 0.03 0.27 0.56 0.44 1.6
embarrassed 0.09 0.52 0.04 0.67 0.73 0.27 1.9
emo_recog -0.08 0.45 0.29 -0.01 0.29 0.71 1.8
fear 0.77 0.31 0.12 -0.04 0.70 0.30 1.4
free_will 0.08 0.12 0.48 -0.05 0.25 0.75 1.2
goal 0.16 0.22 0.42 0.03 0.25 0.75 1.9
guilt 0.15 0.62 0.06 0.65 0.83 0.17 2.1
happy 0.37 0.79 0.02 -0.07 0.76 0.24 1.4
hungry 0.94 -0.02 -0.07 0.09 0.89 0.11 1.0
intentions -0.31 0.32 0.45 -0.02 0.40 0.60 2.6
joy 0.33 0.80 0.00 0.06 0.75 0.25 1.4
love 0.29 0.73 0.13 0.11 0.66 0.34 1.4
morality -0.19 0.44 0.33 0.01 0.34 0.66 2.2
nauseated 0.67 0.27 0.14 -0.02 0.54 0.46 1.4
odors 0.67 -0.04 0.23 0.12 0.52 0.48 1.3
pain 0.83 0.14 0.06 0.07 0.71 0.29 1.1
personality -0.03 0.52 0.24 0.01 0.33 0.67 1.4
pleasure 0.57 0.44 0.07 0.05 0.53 0.47 1.9
pride 0.16 0.77 0.06 0.20 0.67 0.33 1.2
reasoning 0.01 0.20 0.59 -0.05 0.39 0.61 1.2
recognizing -0.44 0.25 0.59 -0.05 0.61 0.39 2.3
remembering -0.33 0.23 0.56 -0.05 0.48 0.52 2.0
safe 0.72 0.27 0.22 -0.03 0.65 0.35 1.5
seeing 0.23 -0.05 0.57 0.11 0.40 0.60 1.4
self_aware 0.24 0.23 0.40 -0.04 0.27 0.73 2.3
self_restraint 0.01 0.44 0.32 0.00 0.30 0.70 1.8
sounds 0.13 0.00 0.52 0.04 0.29 0.71 1.1
temperature 0.18 -0.03 0.54 0.10 0.34 0.66 1.3
thoughts 0.25 0.39 0.35 -0.11 0.35 0.65 2.9
tired 0.73 0.22 0.22 0.06 0.63 0.37 1.4
MR1 MR2 MR3 MR4
SS loadings 7.32 6.89 4.89 1.14
Proportion Var 0.18 0.17 0.12 0.03
Cumulative Var 0.18 0.36 0.48 0.51
Proportion Explained 0.36 0.34 0.24 0.06
Cumulative Proportion 0.36 0.70 0.94 1.00
Mean item complexity = 1.7
Test of the hypothesis that 4 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 27.45 with Chi Square of 5073.12
The degrees of freedom for the model are 626 and the objective function was 5.74
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 196 with the empirical chi square 628.12 with prob < 0.47
The total number of observations was 200 with MLE Chi Square = 1045.75 with prob < 1.3e-23
Tucker Lewis Index of factoring reliability = 0.876
RMSEA index = 0.064 and the 90 % confidence intervals are 0.052 NA
BIC = -2270.99
Fit based upon off diagonal values = 0.98
Measures of factor score adequacy
MR1 MR2 MR3 MR4
Correlation of scores with factors 0.98 0.96 0.94 0.89
Multiple R square of scores with factors 0.96 0.93 0.89 0.79
Minimum correlation of possible factor scores 0.92 0.86 0.79 0.58
back to TOC
Study 2
Study information:
- Design: 2 conditions (beetle, robot), 3-point response scale, “decide what to do” and “have intentions”
- Population: 7-9yo children
- Date conducted: June - December 2016
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
joining character vector and factor, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 3 and the number of components = 3

Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR11 MR10 MR12 MR13 h2 u2 com
angry 0.59 -0.05 -0.08 -0.07 0.13 0.00 0.15 0.04 -0.02 0.03 -0.05 0.07 -0.02 0.41 0.59 1.4
beliefs 0.47 0.32 -0.04 -0.05 0.16 0.00 0.08 -0.17 -0.01 -0.15 0.08 0.03 0.09 0.43 0.57 2.9
calm 0.55 0.04 0.00 -0.02 -0.10 0.01 -0.09 -0.10 0.01 0.16 0.04 -0.16 0.15 0.40 0.60 1.7
choices 0.41 0.09 0.23 -0.31 0.31 0.08 -0.10 -0.20 0.02 -0.08 -0.10 0.20 -0.02 0.53 0.47 5.4
communicating 0.04 0.29 0.16 0.10 -0.16 0.29 0.06 0.15 0.26 0.06 0.08 0.17 -0.14 0.38 0.62 6.7
computations -0.16 0.80 0.08 0.06 0.07 -0.01 0.06 -0.16 0.06 0.13 0.05 0.09 0.04 0.73 0.27 1.3
conscious 0.35 0.09 0.47 0.01 -0.12 0.29 0.09 0.16 -0.27 0.02 0.07 -0.09 0.07 0.57 0.43 4.3
depressed 0.70 0.04 -0.15 0.06 -0.02 0.08 -0.12 0.12 0.15 0.15 -0.14 0.11 0.06 0.63 0.37 1.7
depth 0.11 0.19 0.42 0.24 0.14 -0.09 0.11 -0.08 0.06 -0.06 0.13 -0.22 -0.03 0.40 0.60 4.2
desires 0.54 -0.10 -0.09 -0.07 0.06 0.13 0.09 -0.11 0.03 -0.14 0.00 -0.07 0.11 0.39 0.61 1.8
disrespected 0.67 0.13 -0.14 -0.01 0.14 0.08 -0.11 0.09 -0.19 -0.03 0.10 0.01 -0.03 0.58 0.42 1.7
embarrassed 0.50 0.16 -0.30 0.17 0.24 0.13 0.37 0.03 -0.09 -0.01 -0.07 0.04 0.00 0.63 0.37 4.1
emo_recog 0.25 0.54 0.03 0.08 0.03 -0.10 0.07 0.27 -0.05 0.02 0.07 0.10 -0.01 0.47 0.53 2.3
fear 0.63 -0.30 0.05 -0.04 -0.15 0.09 0.16 0.14 0.29 -0.03 -0.15 -0.19 -0.04 0.71 0.29 2.9
free_will 0.48 0.04 0.29 -0.21 0.15 0.10 -0.12 -0.25 0.06 -0.14 -0.05 -0.08 -0.04 0.51 0.49 3.7
goal 0.28 0.36 0.00 -0.14 0.01 0.03 0.05 -0.01 0.13 0.11 -0.11 -0.03 0.28 0.35 0.65 4.1
guilt 0.54 0.21 -0.16 0.22 0.14 -0.01 0.23 -0.14 -0.08 -0.05 0.06 -0.20 -0.05 0.56 0.44 3.2
happy 0.69 0.25 -0.20 0.09 -0.18 0.18 -0.10 -0.08 -0.01 0.02 0.07 0.01 -0.14 0.69 0.31 2.0
hungry 0.51 -0.70 0.13 0.13 0.10 -0.04 -0.04 -0.02 0.00 -0.02 -0.02 0.04 -0.03 0.80 0.20 2.1
intentions 0.27 0.44 0.20 -0.09 0.28 0.00 -0.08 -0.09 -0.01 0.14 -0.12 -0.13 -0.27 0.54 0.46 5.0
joy 0.68 0.17 -0.26 0.05 -0.12 0.10 -0.17 -0.06 -0.02 0.03 0.13 0.08 -0.01 0.64 0.36 1.9
love 0.58 0.16 -0.19 0.20 0.02 0.03 -0.13 0.09 -0.14 -0.11 0.02 -0.04 0.03 0.51 0.49 2.1
morality 0.38 0.45 -0.05 -0.04 -0.01 -0.49 -0.01 0.21 0.06 -0.13 0.17 -0.02 -0.07 0.68 0.32 3.9
nauseated 0.37 -0.38 0.03 0.24 0.14 -0.09 0.10 0.00 0.14 -0.02 -0.07 0.11 0.04 0.41 0.59 3.9
odors 0.25 -0.55 0.29 0.00 0.07 0.00 0.16 -0.10 0.12 0.13 0.33 0.06 -0.10 0.64 0.36 3.6
pain 0.56 -0.57 0.13 0.01 0.10 -0.08 -0.13 -0.01 -0.02 -0.08 0.07 0.05 0.10 0.71 0.29 2.5
personality 0.48 0.38 0.03 -0.05 0.22 -0.14 0.17 0.05 0.09 0.01 -0.01 0.10 0.18 0.52 0.48 3.6
pleasure 0.58 0.17 -0.17 -0.02 -0.29 -0.02 -0.17 -0.17 0.07 0.02 0.09 -0.13 0.09 0.57 0.43 2.6
pride 0.63 0.31 -0.28 0.04 -0.07 0.01 0.00 -0.04 -0.04 0.02 -0.08 0.00 -0.08 0.60 0.40 2.0
reasoning 0.18 0.27 0.36 -0.08 -0.04 0.19 -0.08 0.09 0.17 -0.17 0.11 -0.06 0.22 0.41 0.59 6.1
recognizing 0.14 0.33 0.17 0.07 0.00 -0.06 0.10 0.02 0.22 0.06 0.15 -0.09 0.12 0.27 0.73 4.6
remembering -0.03 0.54 0.23 0.06 -0.03 0.15 -0.06 0.07 0.18 -0.34 -0.12 0.14 -0.11 0.58 0.42 3.2
safe 0.63 0.00 0.31 -0.16 -0.35 -0.25 0.17 -0.10 -0.10 0.03 -0.13 0.09 -0.07 0.77 0.23 3.3
seeing -0.09 0.08 0.21 -0.12 0.00 0.14 -0.13 0.21 0.03 -0.15 0.20 -0.05 -0.17 0.25 0.75 7.8
self_aware 0.23 0.19 0.46 -0.20 0.02 0.16 0.12 0.23 -0.29 0.04 -0.05 -0.05 0.04 0.53 0.47 4.6
self_restraint 0.29 0.21 0.12 -0.20 0.32 -0.14 -0.29 0.18 0.09 0.23 -0.08 -0.18 -0.05 0.53 0.47 8.1
sounds -0.08 0.03 0.33 -0.12 -0.03 0.21 0.14 -0.03 0.12 0.19 0.22 0.09 -0.05 0.31 0.69 5.1
temperature -0.09 0.27 0.55 0.52 -0.04 -0.08 -0.16 -0.09 -0.04 0.02 -0.12 -0.01 0.03 0.71 0.29 3.0
thoughts 0.57 0.10 0.18 -0.12 -0.06 -0.05 -0.15 0.03 -0.08 0.03 0.08 0.13 0.13 0.46 0.54 1.9
tired 0.45 -0.28 0.03 0.22 0.09 -0.01 -0.08 0.24 0.03 0.17 -0.04 0.13 -0.02 0.45 0.55 3.8
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR11 MR10 MR12 MR13
SS loadings 8.11 4.24 2.17 0.96 0.91 0.82 0.77 0.70 0.63 0.53 0.52 0.47 0.46
Proportion Var 0.20 0.11 0.05 0.02 0.02 0.02 0.02 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var 0.20 0.31 0.36 0.39 0.41 0.43 0.45 0.47 0.48 0.50 0.51 0.52 0.53
Proportion Explained 0.38 0.20 0.10 0.05 0.04 0.04 0.04 0.03 0.03 0.02 0.02 0.02 0.02
Cumulative Proportion 0.38 0.58 0.68 0.73 0.77 0.81 0.84 0.88 0.91 0.93 0.96 0.98 1.00
Mean item complexity = 3.5
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 338 and the objective function was 1.73
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 198 with the empirical chi square 155.46 with prob < 1
The total number of observations was 200 with MLE Chi Square = 304.73 with prob < 0.9
Tucker Lewis Index of factoring reliability = 1.034
RMSEA index = 0.01 and the 90 % confidence intervals are NA 0.012
BIC = -1486.1
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR11 MR10 MR12
Correlation of scores with factors 0.98 0.96 0.92 0.84 0.84 0.83 0.81 0.78 0.77 0.73 0.74 0.71
Multiple R square of scores with factors 0.95 0.93 0.84 0.71 0.70 0.68 0.65 0.61 0.59 0.53 0.55 0.51
Minimum correlation of possible factor scores 0.91 0.85 0.68 0.42 0.40 0.36 0.30 0.22 0.18 0.06 0.10 0.01
MR13
Correlation of scores with factors 0.69
Multiple R square of scores with factors 0.48
Minimum correlation of possible factor scores -0.04
Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR11 MR10 MR12 MR13 h2 u2 com
angry 0.59 -0.05 -0.08 -0.07 0.13 0.00 0.15 0.04 -0.02 0.03 -0.05 0.07 -0.02 0.41 0.59 1.4
beliefs 0.47 0.32 -0.04 -0.05 0.16 0.00 0.08 -0.17 -0.01 -0.15 0.08 0.03 0.09 0.43 0.57 2.9
calm 0.55 0.04 0.00 -0.02 -0.10 0.01 -0.09 -0.10 0.01 0.16 0.04 -0.16 0.15 0.40 0.60 1.7
choices 0.41 0.09 0.23 -0.31 0.31 0.08 -0.10 -0.20 0.02 -0.08 -0.10 0.20 -0.02 0.53 0.47 5.4
communicating 0.04 0.29 0.16 0.10 -0.16 0.29 0.06 0.15 0.26 0.06 0.08 0.17 -0.14 0.38 0.62 6.7
computations -0.16 0.80 0.08 0.06 0.07 -0.01 0.06 -0.16 0.06 0.13 0.05 0.09 0.04 0.73 0.27 1.3
conscious 0.35 0.09 0.47 0.01 -0.12 0.29 0.09 0.16 -0.27 0.02 0.07 -0.09 0.07 0.57 0.43 4.3
depressed 0.70 0.04 -0.15 0.06 -0.02 0.08 -0.12 0.12 0.15 0.15 -0.14 0.11 0.06 0.63 0.37 1.7
depth 0.11 0.19 0.42 0.24 0.14 -0.09 0.11 -0.08 0.06 -0.06 0.13 -0.22 -0.03 0.40 0.60 4.2
desires 0.54 -0.10 -0.09 -0.07 0.06 0.13 0.09 -0.11 0.03 -0.14 0.00 -0.07 0.11 0.39 0.61 1.8
disrespected 0.67 0.13 -0.14 -0.01 0.14 0.08 -0.11 0.09 -0.19 -0.03 0.10 0.01 -0.03 0.58 0.42 1.7
embarrassed 0.50 0.16 -0.30 0.17 0.24 0.13 0.37 0.03 -0.09 -0.01 -0.07 0.04 0.00 0.63 0.37 4.1
emo_recog 0.25 0.54 0.03 0.08 0.03 -0.10 0.07 0.27 -0.05 0.02 0.07 0.10 -0.01 0.47 0.53 2.3
fear 0.63 -0.30 0.05 -0.04 -0.15 0.09 0.16 0.14 0.29 -0.03 -0.15 -0.19 -0.04 0.71 0.29 2.9
free_will 0.48 0.04 0.29 -0.21 0.15 0.10 -0.12 -0.25 0.06 -0.14 -0.05 -0.08 -0.04 0.51 0.49 3.7
goal 0.28 0.36 0.00 -0.14 0.01 0.03 0.05 -0.01 0.13 0.11 -0.11 -0.03 0.28 0.35 0.65 4.1
guilt 0.54 0.21 -0.16 0.22 0.14 -0.01 0.23 -0.14 -0.08 -0.05 0.06 -0.20 -0.05 0.56 0.44 3.2
happy 0.69 0.25 -0.20 0.09 -0.18 0.18 -0.10 -0.08 -0.01 0.02 0.07 0.01 -0.14 0.69 0.31 2.0
hungry 0.51 -0.70 0.13 0.13 0.10 -0.04 -0.04 -0.02 0.00 -0.02 -0.02 0.04 -0.03 0.80 0.20 2.1
intentions 0.27 0.44 0.20 -0.09 0.28 0.00 -0.08 -0.09 -0.01 0.14 -0.12 -0.13 -0.27 0.54 0.46 5.0
joy 0.68 0.17 -0.26 0.05 -0.12 0.10 -0.17 -0.06 -0.02 0.03 0.13 0.08 -0.01 0.64 0.36 1.9
love 0.58 0.16 -0.19 0.20 0.02 0.03 -0.13 0.09 -0.14 -0.11 0.02 -0.04 0.03 0.51 0.49 2.1
morality 0.38 0.45 -0.05 -0.04 -0.01 -0.49 -0.01 0.21 0.06 -0.13 0.17 -0.02 -0.07 0.68 0.32 3.9
nauseated 0.37 -0.38 0.03 0.24 0.14 -0.09 0.10 0.00 0.14 -0.02 -0.07 0.11 0.04 0.41 0.59 3.9
odors 0.25 -0.55 0.29 0.00 0.07 0.00 0.16 -0.10 0.12 0.13 0.33 0.06 -0.10 0.64 0.36 3.6
pain 0.56 -0.57 0.13 0.01 0.10 -0.08 -0.13 -0.01 -0.02 -0.08 0.07 0.05 0.10 0.71 0.29 2.5
personality 0.48 0.38 0.03 -0.05 0.22 -0.14 0.17 0.05 0.09 0.01 -0.01 0.10 0.18 0.52 0.48 3.6
pleasure 0.58 0.17 -0.17 -0.02 -0.29 -0.02 -0.17 -0.17 0.07 0.02 0.09 -0.13 0.09 0.57 0.43 2.6
pride 0.63 0.31 -0.28 0.04 -0.07 0.01 0.00 -0.04 -0.04 0.02 -0.08 0.00 -0.08 0.60 0.40 2.0
reasoning 0.18 0.27 0.36 -0.08 -0.04 0.19 -0.08 0.09 0.17 -0.17 0.11 -0.06 0.22 0.41 0.59 6.1
recognizing 0.14 0.33 0.17 0.07 0.00 -0.06 0.10 0.02 0.22 0.06 0.15 -0.09 0.12 0.27 0.73 4.6
remembering -0.03 0.54 0.23 0.06 -0.03 0.15 -0.06 0.07 0.18 -0.34 -0.12 0.14 -0.11 0.58 0.42 3.2
safe 0.63 0.00 0.31 -0.16 -0.35 -0.25 0.17 -0.10 -0.10 0.03 -0.13 0.09 -0.07 0.77 0.23 3.3
seeing -0.09 0.08 0.21 -0.12 0.00 0.14 -0.13 0.21 0.03 -0.15 0.20 -0.05 -0.17 0.25 0.75 7.8
self_aware 0.23 0.19 0.46 -0.20 0.02 0.16 0.12 0.23 -0.29 0.04 -0.05 -0.05 0.04 0.53 0.47 4.6
self_restraint 0.29 0.21 0.12 -0.20 0.32 -0.14 -0.29 0.18 0.09 0.23 -0.08 -0.18 -0.05 0.53 0.47 8.1
sounds -0.08 0.03 0.33 -0.12 -0.03 0.21 0.14 -0.03 0.12 0.19 0.22 0.09 -0.05 0.31 0.69 5.1
temperature -0.09 0.27 0.55 0.52 -0.04 -0.08 -0.16 -0.09 -0.04 0.02 -0.12 -0.01 0.03 0.71 0.29 3.0
thoughts 0.57 0.10 0.18 -0.12 -0.06 -0.05 -0.15 0.03 -0.08 0.03 0.08 0.13 0.13 0.46 0.54 1.9
tired 0.45 -0.28 0.03 0.22 0.09 -0.01 -0.08 0.24 0.03 0.17 -0.04 0.13 -0.02 0.45 0.55 3.8
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR11 MR10 MR12 MR13
SS loadings 8.11 4.24 2.17 0.96 0.91 0.82 0.77 0.70 0.63 0.53 0.52 0.47 0.46
Proportion Var 0.20 0.11 0.05 0.02 0.02 0.02 0.02 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var 0.20 0.31 0.36 0.39 0.41 0.43 0.45 0.47 0.48 0.50 0.51 0.52 0.53
Proportion Explained 0.38 0.20 0.10 0.05 0.04 0.04 0.04 0.03 0.03 0.02 0.02 0.02 0.02
Cumulative Proportion 0.38 0.58 0.68 0.73 0.77 0.81 0.84 0.88 0.91 0.93 0.96 0.98 1.00
Mean item complexity = 3.5
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 338 and the objective function was 1.73
The root mean square of the residuals (RMSR) is 0.02
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 198 with the empirical chi square 155.46 with prob < 1
The total number of observations was 200 with MLE Chi Square = 304.73 with prob < 0.9
Tucker Lewis Index of factoring reliability = 1.034
RMSEA index = 0.01 and the 90 % confidence intervals are NA 0.012
BIC = -1486.1
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR1 MR2 MR3 MR4 MR5 MR6 MR7 MR8 MR9 MR11 MR10 MR12
Correlation of scores with factors 0.98 0.96 0.92 0.84 0.84 0.83 0.81 0.78 0.77 0.73 0.74 0.71
Multiple R square of scores with factors 0.95 0.93 0.84 0.71 0.70 0.68 0.65 0.61 0.59 0.53 0.55 0.51
Minimum correlation of possible factor scores 0.91 0.85 0.68 0.42 0.40 0.36 0.30 0.22 0.18 0.06 0.10 0.01
MR13
Correlation of scores with factors 0.69
Multiple R square of scores with factors 0.48
Minimum correlation of possible factor scores -0.04
[1] 3
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d2_all, nfactors = nfactors_d2_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 h2 u2 com
angry 0.50 0.31 0.05 0.351 0.65 1.7
beliefs 0.53 -0.04 0.22 0.330 0.67 1.3
calm 0.48 0.22 0.13 0.298 0.70 1.6
choices 0.28 0.19 0.36 0.241 0.76 2.4
communicating 0.09 -0.19 0.26 0.108 0.89 2.1
computations 0.14 -0.71 0.34 0.638 0.36 1.5
conscious 0.17 0.20 0.49 0.307 0.69 1.6
depressed 0.66 0.26 0.03 0.505 0.49 1.3
depth 0.02 0.01 0.45 0.199 0.80 1.0
desires 0.44 0.32 0.03 0.303 0.70 1.8
disrespected 0.67 0.19 0.10 0.488 0.51 1.2
embarrassed 0.57 0.04 -0.06 0.330 0.67 1.0
emo_recog 0.40 -0.31 0.29 0.341 0.66 2.7
fear 0.39 0.53 0.06 0.438 0.56 1.9
free_will 0.31 0.28 0.40 0.335 0.67 2.7
goal 0.37 -0.17 0.22 0.217 0.78 2.1
guilt 0.59 0.05 0.06 0.351 0.65 1.0
happy 0.76 0.07 0.05 0.582 0.42 1.0
hungry 0.12 0.87 -0.07 0.777 0.22 1.1
intentions 0.32 -0.18 0.41 0.297 0.70 2.3
joy 0.75 0.12 -0.04 0.575 0.42 1.1
love 0.63 0.11 0.00 0.414 0.59 1.1
morality 0.47 -0.18 0.20 0.293 0.71 1.7
nauseated 0.16 0.51 -0.06 0.288 0.71 1.2
odors -0.10 0.63 0.11 0.424 0.58 1.1
pain 0.21 0.79 0.01 0.663 0.34 1.1
personality 0.51 -0.06 0.31 0.359 0.64 1.7
pleasure 0.62 0.09 0.02 0.393 0.61 1.0
pride 0.77 -0.04 -0.02 0.602 0.40 1.0
reasoning 0.12 -0.04 0.49 0.259 0.74 1.1
recognizing 0.18 -0.17 0.32 0.159 0.84 2.1
remembering 0.10 -0.40 0.39 0.318 0.68 2.1
safe 0.42 0.33 0.31 0.381 0.62 2.8
seeing -0.13 -0.05 0.23 0.072 0.93 1.7
self_aware 0.11 0.06 0.52 0.288 0.71 1.1
self_restraint 0.26 0.02 0.28 0.145 0.85 2.0
sounds -0.17 0.01 0.33 0.140 0.86 1.5
temperature -0.12 -0.13 0.42 0.212 0.79 1.4
thoughts 0.46 0.24 0.32 0.367 0.63 2.4
tired 0.27 0.46 -0.01 0.286 0.71 1.6
MR1 MR2 MR3
SS loadings 7.05 4.19 2.84
Proportion Var 0.18 0.10 0.07
Cumulative Var 0.18 0.28 0.35
Proportion Explained 0.50 0.30 0.20
Cumulative Proportion 0.50 0.80 1.00
Mean item complexity = 1.6
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 780 and the objective function was 17.08 with Chi Square of 3157.08
The degrees of freedom for the model are 663 and the objective function was 4.77
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.06
The harmonic number of observations is 198 with the empirical chi square 801.93 with prob < 0.00016
The total number of observations was 200 with MLE Chi Square = 871.71 with prob < 8.1e-08
Tucker Lewis Index of factoring reliability = 0.895
RMSEA index = 0.047 and the 90 % confidence intervals are 0.032 0.047
BIC = -2641.07
Fit based upon off diagonal values = 0.95
Measures of factor score adequacy
MR1 MR2 MR3
Correlation of scores with factors 0.96 0.95 0.88
Multiple R square of scores with factors 0.91 0.90 0.78
Minimum correlation of possible factor scores 0.83 0.80 0.55
back to TOC
Study 3
Study information:
- Design: 7 conditions (beetle, robot, …) + 2 follow-up conditions, 3-point response scale, “decide what to do” and “have intentions”
- Population: 7-9yo children
- Date conducted: January - June 2017
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 3 and the number of components = 3

Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR5 MR2 MR4 MR6 MR10 MR8 MR9 MR11 MR3 MR7 MR12 MR13 h2 u2 com
angry 0.69 0.32 -0.17 0.06 0.03 -0.15 0.33 -0.33 0.03 0.12 0.11 0.07 -0.01 0.88 0.122 3.0
choices 0.39 0.34 0.20 0.10 0.38 -0.15 0.17 0.24 0.12 0.08 0.13 -0.24 -0.14 0.69 0.308 6.9
conscious 0.38 0.25 0.27 -0.03 0.12 -0.06 0.21 0.12 0.08 0.02 0.12 0.30 0.12 0.48 0.519 5.7
depressed 0.51 0.40 -0.09 0.30 -0.10 0.25 0.27 -0.15 0.16 -0.02 0.05 -0.04 -0.04 0.72 0.283 4.6
depth 0.45 -0.01 0.89 0.01 -0.02 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.00 1.00 0.005 1.5
disrespected 0.40 0.35 -0.08 0.33 -0.14 0.36 0.23 0.04 0.09 0.11 0.04 -0.04 0.16 0.65 0.352 5.8
embarrassed 0.39 0.29 0.05 0.39 -0.15 0.17 0.15 0.08 -0.35 0.04 0.13 -0.05 0.01 0.61 0.388 5.4
fear 0.91 -0.08 -0.22 0.08 0.01 0.00 -0.01 0.00 0.00 0.31 0.00 0.00 0.00 1.00 0.005 1.4
guilt 0.32 0.31 -0.20 0.35 -0.18 0.07 0.32 0.13 -0.36 0.19 -0.02 0.00 -0.14 0.71 0.294 7.5
happy 0.54 0.42 -0.16 0.14 -0.06 0.09 -0.04 -0.06 0.17 0.03 0.00 -0.10 -0.20 0.62 0.383 3.1
hungry 0.81 0.16 -0.14 -0.49 -0.10 0.00 -0.04 0.01 -0.01 0.11 0.14 0.00 0.00 0.98 0.020 2.0
love 0.56 0.14 -0.22 0.23 -0.06 0.31 0.05 0.32 -0.01 0.08 -0.02 0.19 -0.04 0.68 0.321 3.8
nauseated 0.43 0.16 -0.07 -0.20 0.14 0.28 0.21 0.02 0.12 0.05 0.14 -0.24 0.24 0.55 0.448 5.8
odors 0.67 0.19 -0.14 -0.42 0.04 0.02 0.06 -0.01 -0.01 0.24 -0.46 0.00 0.00 0.95 0.054 3.2
pain 0.91 -0.03 -0.17 0.01 0.02 0.00 0.00 0.00 0.00 -0.37 -0.01 0.00 0.00 1.00 0.005 1.4
pride 0.54 0.60 -0.16 0.43 -0.20 -0.07 -0.17 0.01 0.01 -0.04 -0.05 0.00 0.03 0.95 0.051 3.5
reasoning 0.26 0.29 0.32 -0.09 0.28 -0.24 0.18 0.39 0.25 0.23 -0.03 0.07 0.00 0.70 0.301 7.9
remembering 0.18 0.29 0.19 0.04 0.43 -0.31 0.24 0.23 -0.24 0.09 0.11 -0.05 0.15 0.65 0.348 6.7
temperature 0.30 0.35 0.30 0.00 0.73 0.12 -0.18 -0.10 -0.06 0.09 0.06 0.03 -0.01 0.90 0.097 2.6
tired 0.70 0.21 -0.01 -0.01 0.06 0.18 0.07 0.19 0.14 0.11 0.13 0.13 -0.07 0.67 0.325 1.9
MR1 MR5 MR2 MR4 MR6 MR10 MR8 MR9 MR11 MR3 MR7 MR12 MR13
SS loadings 6.17 1.74 1.44 1.21 1.12 0.65 0.64 0.58 0.50 0.47 0.35 0.29 0.21
Proportion Var 0.31 0.09 0.07 0.06 0.06 0.03 0.03 0.03 0.02 0.02 0.02 0.01 0.01
Cumulative Var 0.31 0.40 0.47 0.53 0.58 0.62 0.65 0.68 0.70 0.73 0.74 0.76 0.77
Proportion Explained 0.40 0.11 0.09 0.08 0.07 0.04 0.04 0.04 0.03 0.03 0.02 0.02 0.01
Cumulative Proportion 0.40 0.51 0.61 0.69 0.76 0.80 0.84 0.88 0.91 0.94 0.97 0.99 1.00
Mean item complexity = 4.2
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 11.71 with Chi Square of 1399.04
The degrees of freedom for the model are 8 and the objective function was 0.05
The root mean square of the residuals (RMSR) is 0.01
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 128 with the empirical chi square 1.57 with prob < 0.99
The total number of observations was 128 with MLE Chi Square = 5.47 with prob < 0.71
Tucker Lewis Index of factoring reliability = 1.054
RMSEA index = 0 and the 90 % confidence intervals are NA 0.079
BIC = -33.35
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR5 MR2 MR4 MR6 MR10 MR8 MR9 MR11 MR3 MR7 MR12
Correlation of scores with factors 1 0.97 1.00 0.98 0.95 0.83 0.88 0.84 0.78 0.99 0.92 0.66
Multiple R square of scores with factors 1 0.94 0.99 0.96 0.89 0.69 0.77 0.71 0.61 0.98 0.84 0.44
Minimum correlation of possible factor scores 1 0.88 0.99 0.91 0.79 0.38 0.54 0.42 0.21 0.96 0.68 -0.13
MR13
Correlation of scores with factors 0.61
Multiple R square of scores with factors 0.37
Minimum correlation of possible factor scores -0.27
Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR5 MR2 MR4 MR6 MR10 MR8 MR9 MR11 MR3 MR7 MR12 MR13 h2 u2 com
angry 0.69 0.32 -0.17 0.06 0.03 -0.15 0.33 -0.33 0.03 0.12 0.11 0.07 -0.01 0.88 0.122 3.0
choices 0.39 0.34 0.20 0.10 0.38 -0.15 0.17 0.24 0.12 0.08 0.13 -0.24 -0.14 0.69 0.308 6.9
conscious 0.38 0.25 0.27 -0.03 0.12 -0.06 0.21 0.12 0.08 0.02 0.12 0.30 0.12 0.48 0.519 5.7
depressed 0.51 0.40 -0.09 0.30 -0.10 0.25 0.27 -0.15 0.16 -0.02 0.05 -0.04 -0.04 0.72 0.283 4.6
depth 0.45 -0.01 0.89 0.01 -0.02 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.00 1.00 0.005 1.5
disrespected 0.40 0.35 -0.08 0.33 -0.14 0.36 0.23 0.04 0.09 0.11 0.04 -0.04 0.16 0.65 0.352 5.8
embarrassed 0.39 0.29 0.05 0.39 -0.15 0.17 0.15 0.08 -0.35 0.04 0.13 -0.05 0.01 0.61 0.388 5.4
fear 0.91 -0.08 -0.22 0.08 0.01 0.00 -0.01 0.00 0.00 0.31 0.00 0.00 0.00 1.00 0.005 1.4
guilt 0.32 0.31 -0.20 0.35 -0.18 0.07 0.32 0.13 -0.36 0.19 -0.02 0.00 -0.14 0.71 0.294 7.5
happy 0.54 0.42 -0.16 0.14 -0.06 0.09 -0.04 -0.06 0.17 0.03 0.00 -0.10 -0.20 0.62 0.383 3.1
hungry 0.81 0.16 -0.14 -0.49 -0.10 0.00 -0.04 0.01 -0.01 0.11 0.14 0.00 0.00 0.98 0.020 2.0
love 0.56 0.14 -0.22 0.23 -0.06 0.31 0.05 0.32 -0.01 0.08 -0.02 0.19 -0.04 0.68 0.321 3.8
nauseated 0.43 0.16 -0.07 -0.20 0.14 0.28 0.21 0.02 0.12 0.05 0.14 -0.24 0.24 0.55 0.448 5.8
odors 0.67 0.19 -0.14 -0.42 0.04 0.02 0.06 -0.01 -0.01 0.24 -0.46 0.00 0.00 0.95 0.054 3.2
pain 0.91 -0.03 -0.17 0.01 0.02 0.00 0.00 0.00 0.00 -0.37 -0.01 0.00 0.00 1.00 0.005 1.4
pride 0.54 0.60 -0.16 0.43 -0.20 -0.07 -0.17 0.01 0.01 -0.04 -0.05 0.00 0.03 0.95 0.051 3.5
reasoning 0.26 0.29 0.32 -0.09 0.28 -0.24 0.18 0.39 0.25 0.23 -0.03 0.07 0.00 0.70 0.301 7.9
remembering 0.18 0.29 0.19 0.04 0.43 -0.31 0.24 0.23 -0.24 0.09 0.11 -0.05 0.15 0.65 0.348 6.7
temperature 0.30 0.35 0.30 0.00 0.73 0.12 -0.18 -0.10 -0.06 0.09 0.06 0.03 -0.01 0.90 0.097 2.6
tired 0.70 0.21 -0.01 -0.01 0.06 0.18 0.07 0.19 0.14 0.11 0.13 0.13 -0.07 0.67 0.325 1.9
MR1 MR5 MR2 MR4 MR6 MR10 MR8 MR9 MR11 MR3 MR7 MR12 MR13
SS loadings 6.17 1.74 1.44 1.21 1.12 0.65 0.64 0.58 0.50 0.47 0.35 0.29 0.21
Proportion Var 0.31 0.09 0.07 0.06 0.06 0.03 0.03 0.03 0.02 0.02 0.02 0.01 0.01
Cumulative Var 0.31 0.40 0.47 0.53 0.58 0.62 0.65 0.68 0.70 0.73 0.74 0.76 0.77
Proportion Explained 0.40 0.11 0.09 0.08 0.07 0.04 0.04 0.04 0.03 0.03 0.02 0.02 0.01
Cumulative Proportion 0.40 0.51 0.61 0.69 0.76 0.80 0.84 0.88 0.91 0.94 0.97 0.99 1.00
Mean item complexity = 4.2
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 11.71 with Chi Square of 1399.04
The degrees of freedom for the model are 8 and the objective function was 0.05
The root mean square of the residuals (RMSR) is 0.01
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 128 with the empirical chi square 1.57 with prob < 0.99
The total number of observations was 128 with MLE Chi Square = 5.47 with prob < 0.71
Tucker Lewis Index of factoring reliability = 1.054
RMSEA index = 0 and the 90 % confidence intervals are NA 0.079
BIC = -33.35
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR5 MR2 MR4 MR6 MR10 MR8 MR9 MR11 MR3 MR7 MR12
Correlation of scores with factors 1 0.97 1.00 0.98 0.95 0.83 0.88 0.84 0.78 0.99 0.92 0.66
Multiple R square of scores with factors 1 0.94 0.99 0.96 0.89 0.69 0.77 0.71 0.61 0.98 0.84 0.44
Minimum correlation of possible factor scores 1 0.88 0.99 0.91 0.79 0.38 0.54 0.42 0.21 0.96 0.68 -0.13
MR13
Correlation of scores with factors 0.61
Multiple R square of scores with factors 0.37
Minimum correlation of possible factor scores -0.27
[1] 5
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d3_all, nfactors = nfactors_d3_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR2 MR1 MR3 h2 u2 com
angry 0.51 0.54 0.24 0.61 0.39 2.4
choices 0.26 0.14 0.70 0.58 0.42 1.4
conscious 0.18 0.22 0.50 0.33 0.67 1.7
depressed 0.73 0.25 0.13 0.61 0.39 1.3
depth 0.02 0.17 0.50 0.28 0.72 1.2
disrespected 0.70 0.15 0.11 0.52 0.48 1.1
embarrassed 0.65 0.08 0.14 0.45 0.55 1.1
fear 0.42 0.76 0.14 0.77 0.23 1.6
guilt 0.65 0.11 0.05 0.44 0.56 1.1
happy 0.56 0.39 0.14 0.49 0.51 1.9
hungry 0.14 0.91 0.17 0.87 0.13 1.1
love 0.56 0.38 0.06 0.46 0.54 1.8
nauseated 0.19 0.43 0.23 0.27 0.73 2.0
odors 0.11 0.76 0.18 0.63 0.37 1.2
pain 0.38 0.71 0.09 0.66 0.34 1.6
pride 0.74 0.27 0.13 0.63 0.37 1.3
reasoning 0.01 0.13 0.72 0.53 0.47 1.1
remembering 0.09 -0.01 0.65 0.43 0.57 1.0
temperature 0.08 0.13 0.62 0.41 0.59 1.1
tired 0.40 0.56 0.34 0.59 0.41 2.5
MR2 MR1 MR3
SS loadings 3.96 3.88 2.72
Proportion Var 0.20 0.19 0.14
Cumulative Var 0.20 0.39 0.53
Proportion Explained 0.37 0.37 0.26
Cumulative Proportion 0.37 0.74 1.00
Mean item complexity = 1.5
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 11.71 with Chi Square of 1399.04
The degrees of freedom for the model are 133 and the objective function was 1.75
The root mean square of the residuals (RMSR) is 0.05
The df corrected root mean square of the residuals is 0.05
The harmonic number of observations is 128 with the empirical chi square 101.61 with prob < 0.98
The total number of observations was 128 with MLE Chi Square = 206 with prob < 5.1e-05
Tucker Lewis Index of factoring reliability = 0.912
RMSEA index = 0.073 and the 90 % confidence intervals are 0.047 0.083
BIC = -439.32
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy
MR2 MR1 MR3
Correlation of scores with factors 0.92 0.95 0.90
Multiple R square of scores with factors 0.85 0.90 0.80
Minimum correlation of possible factor scores 0.70 0.80 0.61
back to TOC
Subscales
Reliability (and intercorrelations - see alpha)
Call: scoreItems(keys = keys.list, items = d3_all, min = 0, max = 1)
(Unstandardized) Alpha:
SOUL BODY MIND
alpha 0.87 0.9 0.8
Standard errors of unstandardized Alpha:
SOUL BODY MIND
ASE 0.036 0.032 0.049
Average item correlation:
SOUL BODY MIND
average.r 0.49 0.57 0.4
Guttman 6* reliability:
SOUL BODY MIND
Lambda.6 0.89 0.92 0.82
Signal/Noise based upon av.r :
SOUL BODY MIND
Signal/Noise 6.8 9.1 4.1
Scale intercorrelations corrected for attenuation
raw correlations below the diagonal, alpha on the diagonal
corrected correlations above the diagonal:
SOUL BODY MIND
SOUL 0.87 0.72 0.37
BODY 0.63 0.90 0.51
MIND 0.31 0.43 0.80
In order to see the item by scale loadings and frequency counts of the data
print with the short option = FALSE
Loading required namespace: GPArotation
Omega
Call: omega(m = d3_all, plot = F)
Alpha: 0.91
G.6: 0.94
Omega Hierarchical: 0.64
Omega H asymptotic: 0.68
Omega Total 0.94
Schmid Leiman Factor loadings greater than 0.2
g F1* F2* F3* h2 u2 p2
angry 0.65 0.30 0.28 0.61 0.39 0.70
choices 0.43 0.62 0.58 0.42 0.31
conscious 0.37 0.42 0.33 0.67 0.42
depressed 0.54 0.56 0.61 0.39 0.49
depth 0.27 0.44 0.28 0.72 0.26
disrespected 0.46 0.55 0.52 0.48 0.41
embarrassed 0.40 0.53 0.45 0.55 0.36
fear 0.71 0.47 0.77 0.23 0.66
guilt 0.40 0.53 0.44 0.56 0.36
happy 0.56 0.39 0.49 0.51 0.63
hungry 0.68 0.63 0.87 0.13 0.53
love 0.52 0.40 0.46 0.54 0.59
nauseated 0.43 0.26 0.27 0.73 0.67
odors 0.58 0.53 0.63 0.37 0.54
pain 0.65 0.45 0.66 0.34 0.64
pride 0.56 0.56 0.63 0.37 0.49
reasoning 0.31 0.66 0.53 0.47 0.18
remembering 0.23 0.61 0.43 0.57 0.12
temperature 0.31 0.56 0.41 0.59 0.23
tired 0.64 0.20 0.31 0.21 0.59 0.41 0.70
With eigenvalues of:
g F1* F2* F3*
5.1 2.0 1.4 2.0
general/max 2.5 max/min = 1.41
mean percent general = 0.46 with sd = 0.18 and cv of 0.39
Explained Common Variance of the general factor = 0.48
The degrees of freedom are 133 and the fit is 1.75
The number of observations was 128 with Chi Square = 206 with prob < 5.1e-05
The root mean square of the residuals is 0.05
The df corrected root mean square of the residuals is 0.05
RMSEA index = 0.073 and the 90 % confidence intervals are 0.047 0.083
BIC = -439.32
Compare this with the adequacy of just a general factor and no group factors
The degrees of freedom for just the general factor are 170 and the fit is 5.09
The number of observations was 128 with Chi Square = 605.34 with prob < 3.7e-50
The root mean square of the residuals is 0.16
The df corrected root mean square of the residuals is 0.17
RMSEA index = 0.149 and the 90 % confidence intervals are 0.129 0.154
BIC = -219.51
Measures of factor score adequacy
g F1* F2* F3*
Correlation of scores with factors 0.82 0.80 0.72 0.85
Multiple R square of scores with factors 0.68 0.64 0.51 0.73
Minimum correlation of factor score estimates 0.35 0.28 0.03 0.45
Total, General and Subset omega for each subset
g F1* F2* F3*
Omega total for total scores and subscales 0.94 0.88 0.90 0.81
Omega general for total scores and subscales 0.64 0.47 0.59 0.20
Omega group for total scores and subscales 0.22 0.41 0.30 0.61
Study 4
Study information:
- Design: 7 conditions (beetle, robot, …) + 2 follow-up conditions (doll, teddy bear), 3-point response scale, “decide what to do” and “have intentions”
- Population: 4-6yo children
- Date conducted: March 2017 - present
Demographics
Joining, by = c("character", "min_age", "max_age", "median_age", "mean_age", "sd_age")
joining character vector and factor, coercing into character vector
back to TOC
Exploratory factor analysis
Step 1: Run maximal EFA (without and with rotation)
Parallel analysis suggests that the number of factors = 2 and the number of components = 1

Factor Analysis using method = minres
Call: fa(r = d4_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR3 MR5 MR6 MR4 MR7 MR2 MR8 MR10 MR9 MR12 MR11 MR13 h2 u2 com
angry 0.49 0.43 0.31 -0.19 -0.09 -0.17 0.12 -0.42 -0.06 -0.04 0.07 -0.09 0.13 0.83 0.172 5.0
choices 0.33 0.26 0.31 -0.01 -0.04 0.18 0.01 0.14 0.19 -0.02 0.18 -0.03 0.09 0.40 0.598 5.6
conscious 0.26 0.39 0.46 0.42 0.15 -0.25 -0.09 -0.03 -0.02 0.25 -0.08 -0.12 -0.14 0.80 0.199 5.7
depressed 0.46 0.30 0.33 -0.29 0.05 -0.25 0.09 -0.02 0.17 -0.34 0.00 0.16 -0.17 0.77 0.233 6.4
depth 0.29 0.30 0.22 0.25 0.06 0.06 0.03 -0.10 0.47 0.13 -0.12 0.00 0.15 0.58 0.420 4.6
disrespected 0.45 0.39 0.17 -0.04 0.05 -0.12 0.31 -0.03 -0.11 -0.06 0.06 -0.01 0.03 0.52 0.479 3.6
embarrassed 0.53 0.33 -0.27 0.03 0.67 -0.02 0.15 -0.04 -0.02 -0.05 0.00 -0.01 0.00 0.93 0.066 3.0
fear 0.86 -0.05 0.00 0.00 0.01 0.00 -0.51 0.00 0.00 0.00 0.00 0.00 0.00 1.00 0.005 1.6
guilt 0.36 0.32 0.17 0.12 0.10 0.25 -0.08 0.05 0.11 -0.16 0.40 -0.05 -0.05 0.56 0.435 5.4
happy 0.53 0.23 0.23 -0.24 0.27 -0.13 0.07 0.29 0.11 0.04 0.01 -0.15 0.17 0.69 0.312 4.7
hungry 0.64 0.45 0.04 -0.34 -0.05 0.36 0.05 -0.05 -0.07 0.12 -0.05 -0.07 -0.08 0.89 0.107 3.4
love 0.50 0.32 0.21 -0.20 0.15 -0.13 -0.03 0.41 0.01 -0.11 -0.13 -0.11 0.00 0.68 0.316 4.4
nauseated 0.86 -0.06 0.00 0.01 -0.02 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 1.00 0.005 1.6
odors 0.55 0.60 -0.30 0.06 -0.39 -0.10 -0.13 0.05 0.02 -0.01 0.01 -0.01 0.01 0.94 0.056 3.5
pain 0.40 0.41 0.07 -0.02 0.17 -0.11 0.11 -0.02 -0.14 0.42 0.09 0.33 0.07 0.70 0.298 5.0
pride 0.47 0.35 0.35 -0.12 0.03 -0.07 -0.02 0.39 -0.26 0.01 0.04 0.09 0.07 0.72 0.275 4.9
reasoning 0.39 0.40 0.25 0.47 -0.10 0.27 -0.01 -0.03 -0.21 -0.29 -0.06 0.04 0.02 0.81 0.188 5.7
remembering 0.32 0.25 0.14 0.10 0.12 0.42 -0.15 0.04 0.18 -0.06 -0.17 0.13 0.26 0.55 0.446 5.9
temperature 0.27 0.34 0.12 0.24 0.16 0.32 0.02 0.14 0.25 0.19 0.20 0.00 -0.13 0.57 0.429 7.8
tired 0.51 0.51 0.07 -0.13 0.04 0.04 0.00 -0.13 0.19 -0.01 -0.13 0.18 -0.09 0.66 0.342 3.1
MR1 MR3 MR5 MR6 MR4 MR7 MR2 MR8 MR10 MR9 MR12 MR11 MR13
SS loadings 5.00 2.56 1.12 0.91 0.83 0.80 0.73 0.66 0.60 0.56 0.34 0.26 0.24
Proportion Var 0.25 0.13 0.06 0.05 0.04 0.04 0.04 0.03 0.03 0.03 0.02 0.01 0.01
Cumulative Var 0.25 0.38 0.43 0.48 0.52 0.56 0.60 0.63 0.66 0.69 0.71 0.72 0.73
Proportion Explained 0.34 0.18 0.08 0.06 0.06 0.05 0.05 0.05 0.04 0.04 0.02 0.02 0.02
Cumulative Proportion 0.34 0.52 0.59 0.66 0.71 0.77 0.82 0.86 0.90 0.94 0.97 0.98 1.00
Mean item complexity = 4.5
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 9.08 with Chi Square of 939.85
The degrees of freedom for the model are 8 and the objective function was 0.04
The root mean square of the residuals (RMSR) is 0.01
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 110 with the empirical chi square 1.65 with prob < 0.99
The total number of observations was 112 with MLE Chi Square = 3.6 with prob < 0.89
Tucker Lewis Index of factoring reliability = 1.156
RMSEA index = 0 and the 90 % confidence intervals are NA 0.051
BIC = -34.15
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR3 MR5 MR6 MR4 MR7 MR2 MR8 MR10 MR9 MR12
Correlation of scores with factors 1.00 0.97 0.93 0.91 0.96 0.88 1.00 0.85 0.80 0.83 0.68
Multiple R square of scores with factors 1.00 0.95 0.87 0.82 0.91 0.78 0.99 0.73 0.64 0.70 0.46
Minimum correlation of possible factor scores 0.99 0.89 0.73 0.64 0.83 0.56 0.98 0.45 0.28 0.39 -0.08
MR11 MR13
Correlation of scores with factors 0.70 0.67
Multiple R square of scores with factors 0.48 0.45
Minimum correlation of possible factor scores -0.03 -0.10
Factor Analysis using method = minres
Call: fa(r = d4_all, nfactors = 13, rotate = "none", fm = "minres",
cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR3 MR5 MR6 MR4 MR7 MR2 MR8 MR10 MR9 MR12 MR11 MR13 h2 u2 com
angry 0.49 0.43 0.31 -0.19 -0.09 -0.17 0.12 -0.42 -0.06 -0.04 0.07 -0.09 0.13 0.83 0.172 5.0
choices 0.33 0.26 0.31 -0.01 -0.04 0.18 0.01 0.14 0.19 -0.02 0.18 -0.03 0.09 0.40 0.598 5.6
conscious 0.26 0.39 0.46 0.42 0.15 -0.25 -0.09 -0.03 -0.02 0.25 -0.08 -0.12 -0.14 0.80 0.199 5.7
depressed 0.46 0.30 0.33 -0.29 0.05 -0.25 0.09 -0.02 0.17 -0.34 0.00 0.16 -0.17 0.77 0.233 6.4
depth 0.29 0.30 0.22 0.25 0.06 0.06 0.03 -0.10 0.47 0.13 -0.12 0.00 0.15 0.58 0.420 4.6
disrespected 0.45 0.39 0.17 -0.04 0.05 -0.12 0.31 -0.03 -0.11 -0.06 0.06 -0.01 0.03 0.52 0.479 3.6
embarrassed 0.53 0.33 -0.27 0.03 0.67 -0.02 0.15 -0.04 -0.02 -0.05 0.00 -0.01 0.00 0.93 0.066 3.0
fear 0.86 -0.05 0.00 0.00 0.01 0.00 -0.51 0.00 0.00 0.00 0.00 0.00 0.00 1.00 0.005 1.6
guilt 0.36 0.32 0.17 0.12 0.10 0.25 -0.08 0.05 0.11 -0.16 0.40 -0.05 -0.05 0.56 0.435 5.4
happy 0.53 0.23 0.23 -0.24 0.27 -0.13 0.07 0.29 0.11 0.04 0.01 -0.15 0.17 0.69 0.312 4.7
hungry 0.64 0.45 0.04 -0.34 -0.05 0.36 0.05 -0.05 -0.07 0.12 -0.05 -0.07 -0.08 0.89 0.107 3.4
love 0.50 0.32 0.21 -0.20 0.15 -0.13 -0.03 0.41 0.01 -0.11 -0.13 -0.11 0.00 0.68 0.316 4.4
nauseated 0.86 -0.06 0.00 0.01 -0.02 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 1.00 0.005 1.6
odors 0.55 0.60 -0.30 0.06 -0.39 -0.10 -0.13 0.05 0.02 -0.01 0.01 -0.01 0.01 0.94 0.056 3.5
pain 0.40 0.41 0.07 -0.02 0.17 -0.11 0.11 -0.02 -0.14 0.42 0.09 0.33 0.07 0.70 0.298 5.0
pride 0.47 0.35 0.35 -0.12 0.03 -0.07 -0.02 0.39 -0.26 0.01 0.04 0.09 0.07 0.72 0.275 4.9
reasoning 0.39 0.40 0.25 0.47 -0.10 0.27 -0.01 -0.03 -0.21 -0.29 -0.06 0.04 0.02 0.81 0.188 5.7
remembering 0.32 0.25 0.14 0.10 0.12 0.42 -0.15 0.04 0.18 -0.06 -0.17 0.13 0.26 0.55 0.446 5.9
temperature 0.27 0.34 0.12 0.24 0.16 0.32 0.02 0.14 0.25 0.19 0.20 0.00 -0.13 0.57 0.429 7.8
tired 0.51 0.51 0.07 -0.13 0.04 0.04 0.00 -0.13 0.19 -0.01 -0.13 0.18 -0.09 0.66 0.342 3.1
MR1 MR3 MR5 MR6 MR4 MR7 MR2 MR8 MR10 MR9 MR12 MR11 MR13
SS loadings 5.00 2.56 1.12 0.91 0.83 0.80 0.73 0.66 0.60 0.56 0.34 0.26 0.24
Proportion Var 0.25 0.13 0.06 0.05 0.04 0.04 0.04 0.03 0.03 0.03 0.02 0.01 0.01
Cumulative Var 0.25 0.38 0.43 0.48 0.52 0.56 0.60 0.63 0.66 0.69 0.71 0.72 0.73
Proportion Explained 0.34 0.18 0.08 0.06 0.06 0.05 0.05 0.05 0.04 0.04 0.02 0.02 0.02
Cumulative Proportion 0.34 0.52 0.59 0.66 0.71 0.77 0.82 0.86 0.90 0.94 0.97 0.98 1.00
Mean item complexity = 4.5
Test of the hypothesis that 13 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 9.08 with Chi Square of 939.85
The degrees of freedom for the model are 8 and the objective function was 0.04
The root mean square of the residuals (RMSR) is 0.01
The df corrected root mean square of the residuals is 0.03
The harmonic number of observations is 110 with the empirical chi square 1.65 with prob < 0.99
The total number of observations was 112 with MLE Chi Square = 3.6 with prob < 0.89
Tucker Lewis Index of factoring reliability = 1.156
RMSEA index = 0 and the 90 % confidence intervals are NA 0.051
BIC = -34.15
Fit based upon off diagonal values = 1
Measures of factor score adequacy
MR1 MR3 MR5 MR6 MR4 MR7 MR2 MR8 MR10 MR9 MR12
Correlation of scores with factors 1.00 0.97 0.93 0.91 0.96 0.88 1.00 0.85 0.80 0.83 0.68
Multiple R square of scores with factors 1.00 0.95 0.87 0.82 0.91 0.78 0.99 0.73 0.64 0.70 0.46
Minimum correlation of possible factor scores 0.99 0.89 0.73 0.64 0.83 0.56 0.98 0.45 0.28 0.39 -0.08
MR11 MR13
Correlation of scores with factors 0.70 0.67
Multiple R square of scores with factors 0.48 0.45
Minimum correlation of possible factor scores -0.03 -0.10
[1] 3
[1] 3
Step 2: Run EFA with varimax rotation
Factor Analysis using method = minres
Call: fa(r = d4_all, nfactors = nfactors_d4_all, rotate = chosenRotType,
fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
MR1 MR2 MR3 h2 u2 com
angry 0.69 0.15 0.22 0.55 0.45 1.3
choices 0.19 0.43 0.28 0.30 0.70 2.1
conscious 0.20 0.40 0.22 0.25 0.75 2.1
depressed 0.50 0.09 0.44 0.45 0.55 2.0
depth 0.19 0.51 0.10 0.31 0.69 1.4
disrespected 0.55 0.16 0.33 0.43 0.57 1.8
embarrassed 0.34 0.27 0.37 0.33 0.67 2.8
fear 0.40 0.30 0.32 0.35 0.65 2.8
guilt 0.21 0.53 0.19 0.36 0.64 1.6
happy 0.24 0.20 0.76 0.68 0.32 1.3
hungry 0.62 0.35 0.31 0.60 0.40 2.1
love 0.27 0.20 0.70 0.60 0.40 1.5
nauseated 0.54 0.17 0.37 0.46 0.54 2.0
odors 0.59 0.32 0.12 0.47 0.53 1.6
pain 0.42 0.26 0.26 0.31 0.69 2.5
pride 0.33 0.25 0.57 0.50 0.50 2.0
reasoning 0.35 0.53 0.03 0.40 0.60 1.7
remembering 0.14 0.54 0.13 0.33 0.67 1.3
temperature 0.05 0.68 0.14 0.49 0.51 1.1
tired 0.61 0.37 0.22 0.56 0.44 1.9
MR1 MR2 MR3
SS loadings 3.43 2.74 2.56
Proportion Var 0.17 0.14 0.13
Cumulative Var 0.17 0.31 0.44
Proportion Explained 0.39 0.31 0.29
Cumulative Proportion 0.39 0.71 1.00
Mean item complexity = 1.9
Test of the hypothesis that 3 factors are sufficient.
The degrees of freedom for the null model are 190 and the objective function was 9.08 with Chi Square of 939.85
The degrees of freedom for the model are 133 and the objective function was 1.84
The root mean square of the residuals (RMSR) is 0.06
The df corrected root mean square of the residuals is 0.07
The harmonic number of observations is 110 with the empirical chi square 127.91 with prob < 0.61
The total number of observations was 112 with MLE Chi Square = 186.58 with prob < 0.0015
Tucker Lewis Index of factoring reliability = 0.895
RMSEA index = 0.069 and the 90 % confidence intervals are 0.038 0.079
BIC = -440.98
Fit based upon off diagonal values = 0.98
Measures of factor score adequacy
MR1 MR2 MR3
Correlation of scores with factors 0.86 0.85 0.86
Multiple R square of scores with factors 0.74 0.72 0.74
Minimum correlation of possible factor scores 0.48 0.43 0.48
back to TOC
Big factor loadings table for all studies (Studies 1-4)
Joining, by = "capacity"
Joining, by = "capacity"
Joining, by = "capacity"
Mean factor scores
Studies 1-2
Joining, by = c("study", "subid", "character", "age", "gender", "ethnicity", "trialNum", "bgColor", "capacity", "capWording", "hoverTime", "rt", "response", "responseNum", "age_group", "responseNumC")
joining factors with different levels, coercing to character vectorjoining factors with different levels, coercing to character vectorjoining factors with different levels, coercing to character vectorjoining factors with different levels, coercing to character vectorjoining factors with different levels, coercing to character vectorjoining factors with different levels, coercing to character vectorJoining, by = "subid"
Loading required package: Matrix
Attaching package: ‘Matrix’
The following object is masked from ‘package:tidyr’:
expand
Linear mixed model fit by REML ['lmerMod']
Formula: score ~ character * factor * age_group + (1 | subid)
Data: tempC
REML criterion at convergence: 86579.2
Scaled residuals:
Min 1Q Median 3Q Max
-4.3147 -0.6011 0.0312 0.6376 3.0275
Random effects:
Groups Name Variance Std.Dev.
subid (Intercept) 0.2319 0.4816
Residual 0.3482 0.5901
Number of obs: 47532, groups: subid, 400
Fixed effects:
Estimate Std. Error t value
(Intercept) -0.001266 0.024246 -0.05
characterrobot -0.249636 0.024246 -10.30
factorfactor1 0.007373 0.003830 1.93
factorfactor3 0.003199 0.003830 0.84
age_groupchildren 0.182400 0.024246 7.52
characterrobot:factorfactor1 0.270549 0.003830 70.64
characterrobot:factorfactor3 0.381627 0.003830 99.64
characterrobot:age_groupchildren 0.043430 0.024246 1.79
factorfactor1:age_groupchildren 0.458138 0.003830 119.62
factorfactor3:age_groupchildren -0.299420 0.003830 -78.18
characterrobot:factorfactor1:age_groupchildren -0.014001 0.003830 -3.66
characterrobot:factorfactor3:age_groupchildren -0.026621 0.003830 -6.95
Correlation of Fixed Effects:
(Intr) chrctr fctrf1 fctrf3 ag_grp chrc:1 chrc:3 chrc:_ fct1:_ fct3:_ ch:1:_
charactrrbt 0.010
factorfctr1 0.000 0.000
factorfctr3 0.000 0.000 -0.500
ag_grpchldr 0.001 0.030 0.000 0.000
chrctrrbt:1 0.000 0.000 0.013 -0.006 0.000
chrctrrbt:3 0.000 0.000 -0.006 0.013 0.000 -0.500
chrctrrbt:_ 0.030 0.001 0.000 0.000 0.010 0.000 0.000
fctrfctr1:_ 0.000 0.000 -0.002 0.001 0.000 0.033 -0.016 0.000
fctrfctr3:_ 0.000 0.000 0.001 -0.002 0.000 -0.016 0.033 0.000 -0.500
chrctrr:1:_ 0.000 0.000 0.033 -0.016 0.000 -0.002 0.001 0.000 0.013 -0.006
chrctrr:3:_ 0.000 0.000 -0.016 0.033 0.000 0.001 -0.002 0.000 -0.006 0.013 -0.500

Study 3

Studies 3-4

Factor scores by age
Study 1
Joining, by = "subid"

Study 2
Joining, by = "subid"

Studies 1-2
Joining, by = "subid"
Ignoring unknown aesthetics: y

Studies 3-4
Joining, by = c("age_group", "subid", "age", "character")
joining factors with different levels, coercing to character vectorJoining, by = "subid"

LS0tCnRpdGxlOiAiRGlta2lkIENvZ1NjaSAyMDE3IChXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCBDb2dTY2kgMjAxNykiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdGhlbWU6IGZsYXRseQogICAgdG9jOiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwotLS0KCmBgYHtyIGdsb2JhbF9vcHRpb25zLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQpgYGAKCiMgU2V0dXAKCmBgYHtyIHdvcmtzcGFjZSBzZXR1cH0KIyBsb2FkIGxpYnJhcmllcwpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShwc3ljaCkKbGlicmFyeShsYW5nY29nKSAjIHNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2xhbmdjb2cvbGFuZ2NvZwpsaWJyYXJ5KFJDb2xvckJyZXdlcikKbGlicmFyeShwbG90bHkpCmxpYnJhcnkobHVicmlkYXRlKQoKIyBjbGVhciB3b3Jrc3BhY2UKcm0obGlzdCA9IGxzKGFsbCA9IFQpKQpncmFwaGljcy5vZmYoKQpgYGAKCmBgYHtyIGZ1bmN0aW9uc30KIyBtYWtlIG5hLnJtID0gVCB2ZXJzaW9ucyBvZiBzdW1tYXJ5IGZ1bmN0aW9ucwptZWFuX25hIDwtIGZ1bmN0aW9uKHgpIHttZWFuKHgsIG5hLnJtID0gVCl9CmNpX2xvd2VyX25hIDwtIGZ1bmN0aW9uKHgpIHtxdWFudGlsZSh4LCAwLjAyNSwgbmEucm0gPSBUKX0KY2lfdXBwZXJfbmEgPC0gZnVuY3Rpb24oeCkge3F1YW50aWxlKHgsIDAuOTc1LCBuYS5ybSA9IFQpfQoKIyBtYWtlIHJvdW5kaW5nIGZ1bmN0aW9uCnJvdW5kMiA8LSBmdW5jdGlvbih4KSB7Zm9ybWF0KHJvdW5kKHgsIDIpLCBuc21hbGwgPSAyKX0KCiMgbWFrZSBjbGVhbnVwIGZ1bmN0aW9uCmNsZWFudXAgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSwgYWdlX2dyb3VwKSB7CiAgaWYoZ3JlcGwoImFkdWx0IiwgYWdlX2dyb3VwKSkgewogICAgCiAgICAjIHNldCB0YXJnZXQgZGF0YXNldAogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZF9yYXdfc3R1ZHkxfQogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGRfcmF3X3N0dWR5MWJ9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZF9yYXdfc3R1ZHkxY30KICAgIAogICAgIyBlbmFjdCBleGNsdXNpb25hcnkgY3JpdGVyaWEKICAgIGRfY2xlYW5fMSA8LSBkCiAgICAKICAgICMgcmVjb2RlIGJhY2tncm91bmQgYW5kIGRlbW9ncmFwaGljIHZhcmlhYmxlcwogICAgZF9jbGVhbiA8LSBkX2NsZWFuXzEgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggc3R1ZHkgbnVtYmVyCiAgICAgICAgc3R1ZHkgPSBmYWN0b3Ioc3R1ZHkpKSAlPiUKICAgICAgbXV0YXRlKCAjIGRlYWwgd2l0aCByYWNlCiAgICAgICAgcmFjZV9jYXQyID0gZmFjdG9yKHN1YigiICskIiwgIiIsIGV0aG5pY2l0eSkpLAogICAgICAgIHJhY2VfY2F0MyA9IGZhY3RvcihpZmVsc2UoZ3JlcGwoIiAiLCByYWNlX2NhdDIpID09IFQsICJtdWx0aXJhY2lhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5jaGFyYWN0ZXIocmFjZV9jYXQyKSkpKSAlPiUKICAgICAgZHBseXI6OnNlbGVjdChzdHVkeSwgc3ViaWQ6Y291bnRyeV9zZWxmcmVwLCBhZ2VfZ3JvdXAsIHJhY2VfY2F0MykgJT4lCiAgICAgIHJlbmFtZShyYWNlX2NhdCA9IHJhY2VfY2F0MykgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggcmVsaWdpb24gKG5vdGU6IG9ubHkgZGVhbGluZyB3aXRoIGNoaWxkaG9vZCByZWxpZ2lvbiBmb3Igbm93KQogICAgICAgIHJlbGlnaW9uX2NhdDIgPSBmYWN0b3Ioc3ViKCIgKyQiLCAiIiwgcmVsaWdpb25DaGlsZCkpLAogICAgICAgIHJlbGlnaW9uX2NhdDMgPSBmYWN0b3IoaWZlbHNlKGdyZXBsKCIgIiwgcmVsaWdpb25fY2F0MikgPT0gVCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11bHRpcmVsaWdpb3VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5jaGFyYWN0ZXIocmVsaWdpb25fY2F0MikpKSkgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3Qoc3R1ZHk6cmFjZV9jYXQsIHJlbGlnaW9uX2NhdDMpICU+JQogICAgICByZW5hbWUocmVsaWdpb25fY2F0ID0gcmVsaWdpb25fY2F0MykKICAgIAogICAgIyByZW1vdmUgZXh0cmFuZW91cyBkZnMgYW5kIHZhcmlhYmxlcwogICAgcm0oZCwgZF9jbGVhbl8xKQogIH0KICAKICBpZihncmVwbCgiY2hpbGQiLCBhZ2VfZ3JvdXApKSB7CiAgICAKICAgICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkX3Jhd19zdHVkeTJ9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkX3Jhd19zdHVkeTN9CiAgICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkX3Jhd19zdHVkeTR9CiAgICAKICAgICMgcmVjb2RlIGJhY2tncm91bmQgYW5kIGRlbW9ncmFwaGljIHZhcmlhYmxlcwogICAgZF9jbGVhbl8yIDwtIGQgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggc3R1ZHkgbnVtYmVyCiAgICAgICAgc3R1ZHkgPSBmYWN0b3Ioc3R1ZHkpLAogICAgICAgIHJlc3BvbnNlTnVtID0gaWZlbHNlKCFpcy5uYShyZXNwb25zZU51bSksIHJlc3BvbnNlTnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShyZXNwb25zZSA9PSAibm8iLCAwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlc3BvbnNlID09ICJraW5kYSIsIDAuNSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocmVzcG9uc2UgPT0gInllcyIsIDEsIE5BKSkpKSkKICAgICMgTk9URTogbmVlZCB0byByZWNvbmNpbGUgcmFjZS9ldGhuaWNpdHkgYXQgc29tZSBwb2ludC4uLgogICAgIyBOT1RFOiBuZWVkIHRvIGRlYWwgd2l0aCBnZW5kZXIgYXQgc29tZSBwb2ludC4uLgogIAogICAgZF9jbGVhbiA8LSBkX2NsZWFuXzIKICAgIAogICAgIyByZW1vdmUgZXh0cmFuZW91cyBkZnMgYW5kIHZhcmlhYmxlcwogICAgcm0oZCwgZF9jbGVhbl8yKQogIH0KICAKICAjIHJlbW92ZSBvdXRsaWVycyBpZiBkZXNpcmVkCiAgaWYoY2hvc2VuT3V0bGllckhhbmRsaW5nID09ICJyZW1vdmUiKSB7CiAgICAKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUKICAgICAgZ2F0aGVyKGNhcGFjaXR5LCBzY29yZSwgaGFwcHk6cHJpZGUpICU+JQogICAgICBncm91cF9ieShjaGFyYWN0ZXIsIGNhcGFjaXR5KSAlPiUKICAgICAgZmlsdGVyKCFzY29yZSAlaW4lIGJveHBsb3Quc3RhdHMoc2NvcmUsIDIuNSkkb3V0KSAlPiUKICAgICAgc3ByZWFkKGNhcGFjaXR5LCBzY29yZSkgJT4lCiAgICAgIGFycmFuZ2UoY2hhcmFjdGVyLCBzdWJpZCkKICAgIAogIH0KICAKICAjIGZpbHRlciBjaGFyYWN0ZXJzIGlmIGRlc2lyZWQKICBpZihpcy5lbGVtZW50KCJub25lIiwgY2hvc2VuRXhjbHVkZSkpIHt9IGVsc2UgewogICAgCiAgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICAgIGZpbHRlcighY2hhcmFjdGVyICVpbiUgY2hvc2VuRXhjbHVkZSkKICAgIAogICAgfQogICAgCiAgIyBmaWx0ZXIgaXRlbXMgaWYgZGVzaXJlZAogIGlmKGlzLmVsZW1lbnQoIm5vbmUiLCBjaG9zZW5FeGNsdWRlSXRlbSkpIHt9IGVsc2UgewogICAgZF9jbGVhbiA8LSBkX2NsZWFuICU+JQogICAgICBkcGx5cjo6ZmlsdGVyKCFjYXBhY2l0eSAlaW4lIGNob3NlbkV4Y2x1ZGVJdGVtKQogIH0KICAKICAjIGRyb3AgdHJpYWxzIDwyNTAgbXMKICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICBmaWx0ZXIocnQgPj0gMjUwIHwgaXMubmEocnQpKQogIAogICMgY2VudGVyIHJlc3BvbnNlIHZhcmlhYmxlCiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKSB7CiAgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICAgIG11dGF0ZShyZXNwb25zZU51bUMgPSByZXNwb25zZU51bSAtIDQpCiAgfSBlbHNlIHsKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUKICAgICAgbXV0YXRlKHJlc3BvbnNlTnVtQyA9IHJlc3BvbnNlTnVtIC0gMC41KQogIH0KCiAgICAjIHJlbmFtZSBjaGFyYWN0ZXIgbmFtZSB2YXJpYWJsZXMKICBpZigiY2hhck5hbWUiICVpbiUgbmFtZXMoZF9jbGVhbikpIHsKICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUgcmVuYW1lKGNoYXJhY3RlciA9IGNoYXJOYW1lKQogIH0KICAKICAjIGNsZWFudXAKICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiAgICBmaWx0ZXIoIWlzLm5hKHN1YmlkKSwgIWlzLm5hKGNoYXJhY3RlciksICFpcy5uYShjYXBhY2l0eSkpCiAgCiAgIyByZXR1cm4gY2xlYW5lZCBkYXRhc2V0CiAgcmV0dXJuKGRfY2xlYW4pCn0KCiMgbWFrZSBmdW5jdGlvbiBmb3Igc3RyaXBwaW5nIGRhdGFmcmFtZXMgZm9yIGRpbWVuc2lvbiByZWR1Y2F0aW9uCm1ha2VEUkRGIDwtIGZ1bmN0aW9uKGRhdGFzb3VyY2UsIGNob3NlbkNvbmRpdGlvbikgewogIAogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGZpbHRlciBieSBjaGFyYWN0ZXIgaWYgc3BlY2lmaWVkCiAgaWYoY2hvc2VuQ29uZGl0aW9uICVpbiUgYygiYmVldGxlIiwgInJvYm90IikpIHsKICAgIGQgPC0gZCAlPiUgZmlsdGVyKGNoYXJhY3RlciA9PSBjaG9zZW5Db25kaXRpb24pCiAgfQoKICAjIG1ha2Ugc3RyaXBwZWQgZGF0YWZyYW1lIGZvciBkaW1lbnNpb24gcmVkdWNhdGlvbiBhbmFseXNlcwogIGRfc3RyaXAgPC0gZCAlPiUKICAgIGZpbHRlcighaXMubmEoY2hhcmFjdGVyKSwgIWlzLm5hKHN1YmlkKSwgIWlzLm5hKGNhcGFjaXR5KSwgY2FwYWNpdHkgIT0gIiIpICU+JQogICAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgICBzZWxlY3Qoc3ViaWQsIGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgICBzcHJlYWQoY2FwYWNpdHksIHJlc3BvbnNlTnVtKSAlPiUKICAgIHJlbW92ZV9yb3duYW1lcygpICU+JQogICAgY29sdW1uX3RvX3Jvd25hbWVzKHZhciA9ICJzdWJpZCIpCgogICMgcmV0dXJuIHN0cmlwcGVkIGRhdGFmcmFtZQogIHJldHVybihkX3N0cmlwKQp9CgojIG1ha2UgZGVtb2dyYXBoaWNzIGZ1bmN0aW9ucwpkZW1vU2FtcGxlU2l6ZSA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CgogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGdldCBkaXN0aW5jdCBzdWJpZHMKICBzYW1wbGVfc2l6ZSA8LSBkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyKSAlPiUgY291bnQoY2hhcmFjdGVyKSAlPiUgZGF0YS5mcmFtZSgpCgogICMgYWRkIHRvdGFsIHNhbXBsZSBzaXplICAKICBzYW1wbGVfc2l6ZSA8LSByYmluZChzYW1wbGVfc2l6ZSAlPiUgbXV0YXRlKGNoYXJhY3RlciA9IGFzLmNoYXJhY3RlcihjaGFyYWN0ZXIpKSwKICAgICAgICAgICAgICAgICAgICAgICBjKGNoYXJhY3RlciA9ICJhbGwiLCBuID0gZCAlPiUgZGlzdGluY3Qoc3ViaWQpICU+JSBjb3VudCgpICU+JSBhcy5udW1lcmljKCkpKQogIAogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihzYW1wbGVfc2l6ZSkKfQpkZW1vRHVyYXRpb24gPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgc2FtcGxlIHNpemUgcGVyIGNoYXJhY3RlcgogIGR1cmF0aW9uIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBkdXJhdGlvbikgJT4lCiAgICBtdXRhdGUoZHVyYXRpb24gPSBhcy5udW1lcmljKGR1cmF0aW9uKSkgJT4lCiAgICBncm91cF9ieShjaGFyYWN0ZXIpICU+JQogICAgc3VtbWFyaXNlKG1pbl9kdXJhdGlvbiA9IG1pbihkdXJhdGlvbiwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtYXhfZHVyYXRpb24gPSBtYXgoZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVkaWFuX2R1cmF0aW9uID0gbWVkaWFuKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1lYW5fZHVyYXRpb24gPSBtZWFuKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNkX2R1cmF0aW9uID0gc2QoZHVyYXRpb24sIG5hLnJtID0gVCkpCgogICMgYWRkIHRvdGFsIGR1cmF0aW9uCiAgYWxsIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBkdXJhdGlvbikgJT4lCiAgICBtdXRhdGUoZHVyYXRpb24gPSBhcy5udW1lcmljKGR1cmF0aW9uKSkgJT4lCiAgICBzdW1tYXJpc2UobWluX2R1cmF0aW9uID0gbWluKGR1cmF0aW9uLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIG1heF9kdXJhdGlvbiA9IG1heChkdXJhdGlvbiwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWRpYW5fZHVyYXRpb24gPSBtZWRpYW4oZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVhbl9kdXJhdGlvbiA9IG1lYW4oZHVyYXRpb24sIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgc2RfZHVyYXRpb24gPSBzZChkdXJhdGlvbiwgbmEucm0gPSBUKSkgJT4lCiAgICBtdXRhdGUoY2hhcmFjdGVyID0gImFsbCIpCiAgCiAgZHVyYXRpb24gPC0gcmJpbmQoZHVyYXRpb24sIGFsbCkgIyBub3Qgc3VyZSB3aHkgZnVsbF9qb2luIGRvZXNuJ3Qgd29yayAgICAKCiAgIyByZXR1cm4gZGF0YWZyYW1lCiAgcmV0dXJuKGR1cmF0aW9uKQp9CmRlbW9BZ2UgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgc2FtcGxlIHNpemUgcGVyIGNoYXJhY3RlcgogIGFnZSA8LSBkICU+JQogICAgZGlzdGluY3Qoc3ViaWQsIGNoYXJhY3RlciwgYWdlKSAlPiUKICAgIG11dGF0ZShhZ2UgPSBhcy5udW1lcmljKGFnZSkpICU+JQogICAgZ3JvdXBfYnkoY2hhcmFjdGVyKSAlPiUKICAgIHN1bW1hcmlzZShtaW5fYWdlID0gbWluKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtYXhfYWdlID0gbWF4KGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWRpYW5fYWdlID0gbWVkaWFuKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBtZWFuX2FnZSA9IG1lYW4oYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNkX2FnZSA9IHNkKGFnZSwgbmEucm0gPSBUKSkKCiAgIyBhZGQgdG90YWwgYWdlCiAgYWxsIDwtIGQgJT4lCiAgICBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBhZ2UpICU+JQogICAgbXV0YXRlKGFnZSA9IGFzLm51bWVyaWMoYWdlKSkgJT4lCiAgICBzdW1tYXJpc2UobWluX2FnZSA9IG1pbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWF4X2FnZSA9IG1heChhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVkaWFuX2FnZSA9IG1lZGlhbihhZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgbWVhbl9hZ2UgPSBtZWFuKGFnZSwgbmEucm0gPSBUKSwKICAgICAgICAgICAgICBzZF9hZ2UgPSBzZChhZ2UsIG5hLnJtID0gVCkpICU+JQogICAgbXV0YXRlKGNoYXJhY3RlciA9ICJhbGwiKQogIGFnZSA8LSBmdWxsX2pvaW4oYWdlLCBhbGwpCgogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihhZ2UpCn0KZGVtb0dlbmRlciA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CgogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWIiKXtkIDwtIGQxYn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxYyIpe2QgPC0gZDFjfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGdldCBnZW5kZXIgcGVyIGNoYXJhY3RlciBhbmQgb3ZlcmFsbAogIGdlbmRlciA8LSBkYXRhLmZyYW1lKGFkZG1hcmdpbnMod2l0aChkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCBnZW5kZXIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUoY2hhcmFjdGVyLCBnZW5kZXIpKSkpICU+JQogICAgZmlsdGVyKGdlbmRlciAhPSAiU3VtIikgJT4lCiAgICByZW5hbWUobiA9IEZyZXEpCiAgCiAgZ2VuZGVyIDwtIGdlbmRlciAlPiUKICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoaWZlbHNlKGNoYXJhY3RlciA9PSAiU3VtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbGwiLCBhcy5jaGFyYWN0ZXIoY2hhcmFjdGVyKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImJlZXRsZSIsICJyb2JvdCIsICJhbGwiKSkpICU+JQogICAgYXJyYW5nZShjaGFyYWN0ZXIsIGdlbmRlcikgJT4lCiAgICBzcHJlYWQoZ2VuZGVyLCBuKQogIAogICMgcmV0dXJuIGRhdGFmcmFtZQogIHJldHVybihnZW5kZXIpCn0KZGVtb1JhY2UgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDFiIil7ZCA8LSBkMWJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMWMiKXtkIDwtIGQxY30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgcmFjZSBwZXIgY2hhcmFjdGVyIGFuZCBvdmVyYWxsCiAgcmFjZSA8LSBkYXRhLmZyYW1lKGFkZG1hcmdpbnMod2l0aChkICU+JSBkaXN0aW5jdChzdWJpZCwgY2hhcmFjdGVyLCByYWNlX2NhdCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUoY2hhcmFjdGVyLCByYWNlX2NhdCkpKSkgJT4lCiAgICBmaWx0ZXIocmFjZV9jYXQgIT0gIlN1bSIpICU+JQogICAgcmVuYW1lKG4gPSBGcmVxKQoKICAgIHJhY2UgPC0gcmFjZSAlPiUKICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihpZmVsc2UoY2hhcmFjdGVyID09ICJTdW0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxsIiwgYXMuY2hhcmFjdGVyKGNoYXJhY3RlcikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImJlZXRsZSIsICJyb2JvdCIsICJhbGwiKSkpICU+JQogICAgICBhcnJhbmdlKGNoYXJhY3RlciwgcmFjZV9jYXQpICU+JQogICAgICBzcHJlYWQocmFjZV9jYXQsIG4pCiAgCiAgIyByZXR1cm4gZGF0YWZyYW1lCiAgcmV0dXJuKHJhY2UpCn0KCiMgcGxvdHRpbmcgZnVuY3Rpb25zCm1ha2VGYWNldExhYnMgPC0gZnVuY3Rpb24oZGZfcGxvdHRpbmcpIHsKICBmYWNldF9sYWJlbHMgPC0gYXJyYXkoKQogIGRmX3Bsb3R0aW5nIDwtIGRmX3Bsb3R0aW5nICU+JSBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpCiAgZm9yKGkgaW4gMTpsZW5ndGgobGV2ZWxzKGRmX3Bsb3R0aW5nJGNoYXJhY3RlcikpKSB7CiAgICBkZiA8LSBkZl9wbG90dGluZyAlPiUgZmlsdGVyKGNoYXJhY3RlciA9PSBsZXZlbHMoZGZfcGxvdHRpbmckY2hhcmFjdGVyKVtpXSkgJT4lCiAgICAgIHNlbGVjdChjaGFyYWN0ZXIsIG4pICU+JSB1bmlxdWUoKQogICAgZmFjZXRfbGFiZWxzW2ldIDwtIHBhc3RlMChkZiRjaGFyYWN0ZXIsICIgKG4gPSAiLCBkZiRuLCAiKSIpCiAgfQogIG5hbWVzKGZhY2V0X2xhYmVscykgPC0gbGV2ZWxzKGRmX3Bsb3R0aW5nJGNoYXJhY3RlcikKICByZXR1cm4oZmFjZXRfbGFiZWxzKQp9CmBgYAoKYGBge3IgbW9kZWxpbmcgZGVjaXNpb25zfQojIHJlbW92ZSBvdXRsaWVycz8KY2hvc2VuT3V0bGllckhhbmRsaW5nIDwtICJrZWVwIgojIGNob3Nlbk91dGxpZXJIYW5kbGluZyA8LSAicmVtb3ZlIgoKIyBleGNsdWRlIGFueSBjb25kaXRpb25zIChjaGFyYWN0ZXJzKT8KY2hvc2VuRXhjbHVkZSA8LSAibm9uZSIKIyBjaG9zZW5FeGNsdWRlIDwtIGMoInN0YXBsZXIiLCAiY2FyIiwgImNvbXB1dGVyIikKCiMgZXhjbHVkZSBhbnkgaXRlbXMgKG1lbnRhbCBjYXBhY2l0aWVzKT8KIyBjaG9zZW5FeGNsdWRlSXRlbSA8LSAibm9uZSIKIyBjaG9zZW5FeGNsdWRlSXRlbSA8LSAiY29tcHV0YXRpb25zIgpjaG9zZW5FeGNsdWRlSXRlbSA8LSBjKCJtZXRhbCIsICJvbl9vZmYiKQoKIyBOT1RFOiBhbHdheXMgY2hvb3NlIG1pbmltYWwgcmVzaWR1YWwgKGZtID0gIm1pbnJlcyIpIGluc3RlYWQgb2YgTUwgYmVjYXVzZSBvZiBub24tbm9ybWFsaXR5CgojIGZvciBFRkFzLCB3aGF0IGtpbmQgb2YgY29ycmVsYXRpb24/CmNob3NlbkNvclR5cGUgPC0gImNvciIgIyBwZWFyc29uIGNvcnJlbGF0aW9uCiMgY2hvc2VuQ29yVHlwZSA8LSAicG9seSIgIyBwb2x5Y2hvcmljIGNvcnJlbGF0aW9uCgojIGZvciBFRkFzLCB3aGF0IGtpbmQgb2Ygcm90YXRpb24/CmNob3NlblJvdFR5cGUgPC0gInZhcmltYXgiICMgdmFyaW1heCByb3RhdGlvbgojIGNob3NlblJvdFR5cGUgPC0gIm9ibGltaW4iICMgb2JsaW1pbiByb3RhdGlvbgojIGNob3NlblJvdFR5cGUgPC0gIm5vbmUiICMgbm8gcm90YXRpb24KCmRhdGEuZnJhbWUoImNvbmRpdGlvbnNFeGNsdWRlZCIgPSBjaG9zZW5FeGNsdWRlLAogICAgICAgICAgICJvdXRsaWVySGFuZGxpbmciID0gY2hvc2VuT3V0bGllckhhbmRsaW5nLAogICAgICAgICAgICJFRkFfY29ycmVsYXRpb24iID0gY2hvc2VuQ29yVHlwZSwKICAgICAgICAgICAiRUZBX3JvdGF0aW9uIiA9IGNob3NlblJvdFR5cGUpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMgRGF0YSBwcmVwYXJhdGlvbgoKYGBge3IgZGF0YSB1cGxvYWR9CiMgc3R1ZHkgMSAoMjAxNi0wNy0wNiwgYWR1bHRzLCAyIGNvbmRpdGlvbnMsIDMtcG9pbnQgc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJtYWtlIHBsYW5zIikKZF9yYXdfc3R1ZHkxIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDFfMjAxNi0wNi0wNV9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxIiwgYWdlX2dyb3VwID0gImFkdWx0cyIpICU+JSBzZWxlY3QoLVgpCgojIHN0dWR5IDFiICgyMDE3LTA3LTE5LCBhZHVsdHMsIDIgY29uZGl0aW9ucywgNy1wb2ludCBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTFiIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDJfMjAxNi0wNy0xOV9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxYiIsIGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUgc2VsZWN0KC1YKQoKIyBzdHVkeSAxYyAoMjAxNi0xMi0wOCwgYWR1bHRzLCAyIGNvbmRpdGlvbnMsIDMtcG9pbnQgc2NhbGUsICJoYXZlIGZyZWUgd2lsbCIgYW5kICJoYXZlIGludGVudGlvbnMiKQpkX3Jhd19zdHVkeTFjIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2FkdWx0cy91c19ydW4tMDNfMjAxNi0xMi0wOF9hbm9ueW1pemVkLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxYyIsIGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUgc2VsZWN0KC1YKQoKIyBzdHVkeSAyIChKdW5lIC0gRGVjZW1iZXIgMjAxNiwgNy05eW8sIDIgY29uZGl0aW9ucywgMy1wb2ludC1zY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTIgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvY2hpbGRyZW4vcnVuLTAxXzIwMTctMDctMjRfYW5vbnltaXplZC5jc3YiKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgMiIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbl83OSIpICU+JSBzZWxlY3QoLVgpCgojIHN0dWR5IDMgKEphbnVhcnkgLSBKdW5lIDIwMTcsIDctOXlvLCA5IGNvbmRpdGlvbnMsIDMtcG9pbnQtc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJtYWtlIHBsYW5zIikKZF9yYXdfc3R1ZHkzIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2NoaWxkcmVuL3J1bi0wMl8yMDE3LTA4LTAzX2Fub255bWl6ZWQuY3N2IikgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDMiLCBhZ2VfZ3JvdXAgPSAiY2hpbGRyZW5fNzkiKSAlPiUgc2VsZWN0KC1YKSAlPiUKICBtdXRhdGUoZG9iID0gcGFyc2VfZGF0ZXRpbWUoZGF0ZU9mQmlydGgsICIlbS8lZC8leSIpLAogICAgICAgICBkb3QgPSBwYXJzZV9kYXRldGltZShnc3ViKCIyMDE3IiwgIjE3IiwgZGF0ZU9mVGVzdCksICIlbS8lZC8leSIpLCAKICAgICAgICAgYWdlID0gaW50ZXJ2YWwoc3RhcnQgPSBkb2IsIGVuZCA9IGRvdCkgLyBkdXJhdGlvbihudW0gPSAxLCB1bml0cyA9ICJ5ZWFycyIpKSAlPiUKICBzZWxlY3QoLWRhdGVPZkJpcnRoLCAtZGF0ZU9mVGVzdCwgLWRvYiwgLWRvdCkKCiMgc3R1ZHkgNCAoTWFyeSAyMDE3IC0gcHJlc2VudCwgNC02eW8sIDkgY29uZGl0aW9ucywgMy1wb2ludC1zY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgIm1ha2UgcGxhbnMiKQpkX3Jhd19zdHVkeTQgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvY2hpbGRyZW4vcnVuLTAzXzIwMTctMDgtMDNfYW5vbnltaXplZC5jc3YiKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgNCIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbl80NiIpICU+JSBzZWxlY3QoLVgpICU+JQogIG11dGF0ZShkb2IgPSBwYXJzZV9kYXRldGltZShkYXRlT2ZCaXJ0aCwgIiVtLyVkLyV5IiksCiAgICAgICAgIGRvdCA9IHBhcnNlX2RhdGV0aW1lKGdzdWIoIjIwMTciLCAiMTciLCBkYXRlT2ZUZXN0KSwgIiVtLyVkLyV5IiksIAogICAgICAgICBhZ2UgPSBpbnRlcnZhbChzdGFydCA9IGRvYiwgZW5kID0gZG90KSAvIGR1cmF0aW9uKG51bSA9IDEsIHVuaXRzID0gInllYXJzIikpICU+JQogIHNlbGVjdCgtZGF0ZU9mQmlydGgsIC1kYXRlT2ZUZXN0LCAtZG9iLCAtZG90KQpgYGAKCmBgYHtyIGRhdGEgY2xlYW51cH0KIyBjbGVhbiB1cCBkYXRhc2V0cwpkMSA8LSBjbGVhbnVwKCJzdHVkeSAxIiwgImFkdWx0cyIpCmQxYiA8LSBjbGVhbnVwKCJzdHVkeSAxIiwgImFkdWx0cyIpCmQxYyA8LSBjbGVhbnVwKCJzdHVkeSAxIiwgImFkdWx0cyIpCmQyIDwtIGNsZWFudXAoInN0dWR5IDIiLCAiY2hpbGRyZW4iKQpkMyA8LSBjbGVhbnVwKCJzdHVkeSAzIiwgImNoaWxkcmVuIikKZDQgPC0gY2xlYW51cCgic3R1ZHkgNCIsICJjaGlsZHJlbiIpCgojIHR3ZWFrIGJ5IGhhbmQKZDIgPC0gZDIgJT4lCiAgZmlsdGVyKCFpcy5uYShhZ2UpKSAlPiUKICBmaWx0ZXIoYWdlID49IDcsIGFnZSA8IDEwKSAlPiUKICBmaWx0ZXIoY2hhcmFjdGVyICE9ICJlbGVwaGFudCIpCgpkMyA8LSBkMyAlPiUKICBmaWx0ZXIoIWlzLm5hKGNoYXJhY3RlciksIGNoYXJhY3RlciAhPSAiIikKCmQ0IDwtIGQ0ICU+JQogIGZpbHRlcighaXMubmEoY2hhcmFjdGVyKSwgY2hhcmFjdGVyICE9ICIiKQpgYGAKCmBgYHtyIGRhdGFmcmFtZXMgZm9yIGRpbWVuc2lvbiByZWR1Y2F0aW9ufQojIG1ha2UgZGF0YWZyYW1lcyBmb3IgczEKIyBkMV9iZWV0bGUgPC0gbWFrZURSREYoInN0dWR5IDEiLCAiYmVldGxlIikKIyBkMV9yb2JvdCA8LSBtYWtlRFJERigic3R1ZHkgMSIsICJyb2JvdCIpCmQxX2FsbCA8LSBtYWtlRFJERigic3R1ZHkgMSIsICJhbGwiKQoKIyBtYWtlIGRhdGFmcmFtZXMgZm9yIGZvbGxvdy11cCBzdHVkaWVzIHRvIHMxCmQxYl9hbGwgPC0gbWFrZURSREYoInN0dWR5IDFiIiwgImFsbCIpCmQxY19hbGwgPC0gbWFrZURSREYoInN0dWR5IDFjIiwgImFsbCIpCgojIG1ha2UgZGF0YWZyYW1lcyBmb3Igc3R1ZHkgMgojIGQyX2JlZXRsZSA8LSBtYWtlRFJERigic3R1ZHkgMiIsICJiZWV0bGUiKQojIGQyX3JvYm90IDwtIG1ha2VEUkRGKCJzdHVkeSAyIiwgInJvYm90IikKZDJfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSAyIiwgImFsbCIpCgojIG1ha2UgZGF0YWZyYW1lcyBmb3Igc3R1ZHkgMwojIGQzX2JlZXRsZSA8LSBtYWtlRFJERigic3R1ZHkgMyIsICJiZWV0bGUiKQojIGQzX3JvYm90IDwtIG1ha2VEUkRGKCJzdHVkeSAzIiwgInJvYm90IikKZDNfYWxsIDwtIG1ha2VEUkRGKCJzdHVkeSAzIiwgImFsbCIpCgojIG1ha2UgZGF0YWZyYW1lcyBmb3Igc3R1ZHkgNApkNF9hbGwgPC0gbWFrZURSREYoInN0dWR5IDQiLCAiYWxsIikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyBBbmFseXNpcyBwbGFuCgpGb3IgYWxsIHN0dWRpZXMgd2UgY29uZHVjdCBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgdXNpbmcgUGVhcnNvbiBjb3JyZWxhdGlvbnMgdG8gZmluZCBtaW5pbXVtIHJlc2lkdWFsIHNvbHV0aW9ucy4gCgpGb3IgZWFjaCBzdHVkeSwgd2UgZmlyc3QgZXhhbWluZSBtYXhpbWFsIHVucm90YXRlZCBhbmQgcm90YXRlZCBzb2x1dGlvbnMuIFRvIGRldGVybWluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0LCB3ZSB1c2UgdGhlIGZvbGxvd2luZyBydWxlIG9mIHRodW1iOiBXaXRoICRwJCBvYnNlcnZhdGlvbnMgcGVyIHBhcnRpY2lwYW50LCB3ZSBjYW4gZXh0cmFjdCBhIG1heGltdW0gb2YgJGskIGZhY3RvcnMsIHdoZXJlICQocC1rKSoyID4gcCtrJCwgaS5lLiwgJGsgPCBwLzMkLiBUaHVzLCB3aXRoIDQwIG1lbnRhbCBjYXBhY2l0eSBpdGVtcywgd2UgY2FuIGV4dHJhY3QgYSBtYXhpbXVtIG9mIDEzIGZhY3RvcnMuCgpUbyBkZXRlcm1pbmUgaG93IG1hbnkgZmFjdG9ycyB0byByZXRhaW4sIHdlIHVzZSB0aGUgZm9sbG93aW5nIHByZXNldCByZXRlbnRpb24gY3JpdGVyaWEsIGNvbnNpZGVyaW5nIHRoZSB1bnJvdGF0ZWQgbWF4aW1hbCBzb2x1dGlvbiAodW5sZXNzIG90aGVyd2lzZSBub3RlZCk6CgogIC0gRWFjaCBmYWN0b3IgbXVzdCBoYXZlIGFuIGVpZ2VudmFsdWUgPjEuMC4KICAtIEVhY2ggZmFjdG9yIG11c3QgaW5kaXZpZHVhbGx5IGFjY291bnQgZm9yID41JSBvZiB0aGUgdG90YWwgdmFyaWFuY2UgaW4gdGhlIG1heGltYWwgbW9kZWwuCiAgLSBBZnRlciByb3RhdGlvbiwgZWFjaCBmYWN0b3IgbXVzdCBiZSB0aGUgZG9taW5hbnQgZmFjdG9yIChpLmUuLCB0aGUgZmFjdG9yIHdpdGggdGhlIGhpZ2hlc3QgZmFjdG9yIGxvYWRpbmcpIGZvciDiiaUxIG1lbnRhbCBjYXBhY2l0eSBpdGVtLgoKV2UgdGhlbiBleGFtaW5lIGFuZCBpbnRlcnByZXQgdmFyaW1heC1yb3RhdGVkIHNvbHV0aW9ucywgZXh0cmFjdGluZyBvbmx5IHRoZSBudW1iZXIgb2YgZmFjdG9ycyB0aGF0IG1lZXQgdGhlc2UgY3JpdGVyaWEuCgojIFN0dWR5IDEKClN0dWR5IGluZm9ybWF0aW9uOgoKKiBEZXNpZ246IDIgY29uZGl0aW9ucyAoYmVldGxlLCByb2JvdCksIDMtcG9pbnQgcmVzcG9uc2Ugc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJoYXZlIGludGVudGlvbnMiCiogUG9wdWxhdGlvbjogYWR1bHRzCiogRGF0ZSBjb25kdWN0ZWQ6IDIwMTYtMDctMDYgKE1UdXJrKQoKIyMgRGVtb2dyYXBoaWNzCgpgYGB7ciBzMSBkZW1vZ3JhcGhpY3N9CiMgbWFrZSBkZW1vZ3JhcGhpY3MgdGFibGVzCmRlbW9TYW1wbGVTaXplKCJzdHVkeSAxIikKZGVtb0R1cmF0aW9uKCJzdHVkeSAxIikKZGVtb0FnZSgic3R1ZHkgMSIpCmRlbW9HZW5kZXIoInN0dWR5IDEiKQpkZW1vUmFjZSgic3R1ZHkgMSIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIEV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcwoKIyMjIFN0ZXAgMTogUnVuIG1heGltYWwgRUZBICh3aXRob3V0IGFuZCB3aXRoIHJvdGF0aW9uKQoKYGBge3IgczEgYWxsIG5vIHJvdGF0aW9ufQojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkMV9hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDFfYWxsX3Vucm90YXRlZCA8LSBmYShkMV9hbGwsIDEzLCByb3RhdGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMV9hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2QxX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2QxX2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDFfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDFfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kMV9hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczEgYWxsIHJvdGF0aW9ufQplZmFfZDFfYWxsX3JvdGF0ZWRfbWF4IDwtIGZhKGQxX2FsbCwgMTMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgplZmFfZDFfYWxsX3JvdGF0ZWQgPC0gZmEoZDFfYWxsLCBlZmFfZDFfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kMV9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2QxX2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2QxX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QxX2FsbCA8LSBlZmFfZDFfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2QxX2FsbApgYGAKCiMjIyBTdGVwIDI6IFJ1biBFRkEgd2l0aCB2YXJpbWF4IHJvdGF0aW9uCgpgYGB7ciBzMSBhbGwgdmFyaW1heCByb3RhdGlvbn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QxX2FsbF9yb3RhdGVkTiA8LSBmYShkMV9hbGwsIG5mYWN0b3JzX2QxX2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QxX2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDFfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMjIyBGYWN0b3IgbG9hZGluZ3MgdGFibGUKCmBgYHtyIHMxIGxvYWRpbmdzIHRhYmxlfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QxX2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCiMgU3R1ZHkgMgoKU3R1ZHkgaW5mb3JtYXRpb246CgoqIERlc2lnbjogMiBjb25kaXRpb25zIChiZWV0bGUsIHJvYm90KSwgMy1wb2ludCByZXNwb25zZSBzY2FsZSwgImRlY2lkZSB3aGF0IHRvIGRvIiBhbmQgImhhdmUgaW50ZW50aW9ucyIKKiBQb3B1bGF0aW9uOiA3LTl5byBjaGlsZHJlbgoqIERhdGUgY29uZHVjdGVkOiBKdW5lIC0gRGVjZW1iZXIgMjAxNgoKIyMgRGVtb2dyYXBoaWNzCgpgYGB7ciBzMiBkZW1vZ3JhcGhpY3N9CiMgbWFrZSBkZW1vZ3JhcGhpY3MgdGFibGVzCmRlbW9TYW1wbGVTaXplKCJzdHVkeSAyIikKIyBkZW1vRHVyYXRpb24oInN0dWR5IDIiKQpkZW1vQWdlKCJzdHVkeSAyIikKZGVtb0dlbmRlcigic3R1ZHkgMiIpCiMgZGVtb1JhY2UoInN0dWR5IDIiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyBFeHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMKCiMjIyBTdGVwIDE6IFJ1biBtYXhpbWFsIEVGQSAod2l0aG91dCBhbmQgd2l0aCByb3RhdGlvbikKCmBgYHtyIHMyIGFsbCBubyByb3RhdGlvbn0KIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDJfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QyX2FsbF91bnJvdGF0ZWQgPC0gZmEoZDJfYWxsLCAxMywgcm90YXRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDJfYWxsX3Vucm90YXRlZCkKCiMgZXhhbWluZSBlaWdlbnZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkCmVmYV9kMl9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzIDwtIHByaW50KGVmYV9kMl9hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2QyX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMgPC0gZWZhX2QyX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgJT4lCiAgZmlsdGVyKFNTLmxvYWRpbmdzID4gMSwgUHJvcG9ydGlvbi5FeHBsYWluZWQgPiAwLjA1KSAlPiUKICBjb3VudCgpICU+JQogIGFzLm51bWVyaWMoKQplZmFfZDJfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHMyIGFsbCByb3RhdGlvbn0KZWZhX2QyX2FsbF9yb3RhdGVkX21heCA8LSBmYShkMl9hbGwsIDEzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKZWZhX2QyX2FsbF9yb3RhdGVkIDwtIGZhKGQyX2FsbCwgZWZhX2QyX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgojIGNoZWNrIHRoYXQgZWFjaCBvZiB0aGVzZSBmYWN0b3JzIGlzIHRoZSBkb21pbmFudCBmYWN0b3IgZm9yIGF0IGxlYXN0IG9uZSBtZW50YWwgY2FwYWNpdHkgaXRlbQplZmFfZDJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgPC0gZmEuc29ydChsb2FkaW5ncyhlZmFfZDJfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kMl9hbGxfcm90YXRlZF9sb2FkaW5ncwoKIyBkcm9wIGFueSBmYWN0b3JzIHdoZXJlIG4gPCAxCmVmYV9kMl9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKQoKIyBzZXQgbnVtYmVyIG9mIGZhY3RvcnMgdG8gZXh0cmFjdApuZmFjdG9yc19kMl9hbGwgPC0gZWZhX2QyX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApICU+JQogIG5yb3coKQpuZmFjdG9yc19kMl9hbGwKYGBgCgojIyMgU3RlcCAyOiBSdW4gRUZBIHdpdGggdmFyaW1heCByb3RhdGlvbgoKYGBge3IgczIgYWxsIHZhcmltYXggcm90YXRpb259CiMgcnVuIEVGQSB3aXRoIHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMl9hbGxfcm90YXRlZE4gPC0gZmEoZDJfYWxsLCBuZmFjdG9yc19kMl9hbGwsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMl9hbGxfcm90YXRlZE4pCgojIGdldCBsb2FkaW5ncyBmb3IgZWFjaCBmYWN0b3IKZWZhX2QyX2FsbF9yb3RhdGVkTl9sb2FkaW5ncyA8LSBsb2FkaW5ncyhlZmFfZDJfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIyMgRmFjdG9yIGxvYWRpbmdzIHRhYmxlCgpgYGB7ciBzMiBsb2FkaW5ncyB0YWJsZX0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMl9hbGxfcm90YXRlZE4pKVtdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk0iKSksIGZ1bnMocm91bmQyKSkKYGBgCgojIFN0dWR5IDMgCgpTdHVkeSBpbmZvcm1hdGlvbjoKCiogRGVzaWduOiA3IGNvbmRpdGlvbnMgKGJlZXRsZSwgcm9ib3QsIC4uLikgKyAyIGZvbGxvdy11cCBjb25kaXRpb25zLCAzLXBvaW50IHJlc3BvbnNlIHNjYWxlLCAiZGVjaWRlIHdoYXQgdG8gZG8iIGFuZCAiaGF2ZSBpbnRlbnRpb25zIgoqIFBvcHVsYXRpb246IDctOXlvIGNoaWxkcmVuCiogRGF0ZSBjb25kdWN0ZWQ6IEphbnVhcnkgLSBKdW5lIDIwMTcKCiMjIERlbW9ncmFwaGljcwoKYGBge3IgczMgZGVtb2dyYXBoaWNzfQojIG1ha2UgZGVtb2dyYXBoaWNzIHRhYmxlcwpkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgMyIpCiMgZGVtb0R1cmF0aW9uKCJzdHVkeSAzIikKIyBkZW1vQWdlKCJzdHVkeSAzIikKIyBkZW1vR2VuZGVyKCJzdHVkeSAzIikKIyBkZW1vUmFjZSgic3R1ZHkgMyIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIEV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcwoKIyMjIFN0ZXAgMTogUnVuIG1heGltYWwgRUZBICh3aXRob3V0IGFuZCB3aXRoIHJvdGF0aW9uKQoKYGBge3IgczMgYWxsIG5vIHJvdGF0aW9ufQojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkM19hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDNfYWxsX3Vucm90YXRlZCA8LSBmYShkM19hbGwsIDEzLCByb3RhdGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kM19hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2QzX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2QzX2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDNfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDNfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kM19hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczMgYWxsIHJvdGF0aW9ufQplZmFfZDNfYWxsX3JvdGF0ZWRfbWF4IDwtIGZhKGQzX2FsbCwgMTMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgplZmFfZDNfYWxsX3JvdGF0ZWQgPC0gZmEoZDNfYWxsLCBlZmFfZDNfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kM19hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kM19hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2QzX2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2QzX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QzX2FsbCA8LSBlZmFfZDNfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2QzX2FsbApgYGAKCiMjIyBTdGVwIDI6IFJ1biBFRkEgd2l0aCB2YXJpbWF4IHJvdGF0aW9uCgpgYGB7ciBzMyBhbGwgdmFyaW1heCByb3RhdGlvbn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QzX2FsbF9yb3RhdGVkTiA8LSBmYShkM19hbGwsIG5mYWN0b3JzX2QzX2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QzX2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDNfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kM19hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMjIyBGYWN0b3IgbG9hZGluZ3MgdGFibGUKCmBgYHtyIHMzIGxvYWRpbmdzIHRhYmxlfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QzX2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCiMjIyBTdWJzY2FsZXMKCiMjIyMgUmVsaWFiaWxpdHkgKGFuZCBpbnRlcmNvcnJlbGF0aW9ucyAtIHNlZSBhbHBoYSkKCmBgYHtyIHMzIHN1YnNjYWxlIHJlbGlhYmlsaXR5fQojIENyb25iYWNoJ3MgYWxwaGEgKHN1YnNjYWxlcykKa2V5cy5saXN0IDwtIGxpc3QoU09VTCA9IGMoInByaWRlIiwgImRlcHJlc3NlZCIsICJkaXNyZXNwZWN0ZWQiLCAiZ3VpbHQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgImVtYmFycmFzc2VkIiwgImhhcHB5IiwgImxvdmUiKSwKICAgICAgICAgICAgICAgICAgQk9EWSA9IGMoImh1bmdyeSIsICJvZG9ycyIsICJmZWFyIiwgInBhaW4iLCAidGlyZWQiLCAiYW5ncnkiLCAibmF1c2VhdGVkIiksCiAgICAgICAgICAgICAgICAgIE1JTkQgPSBjKCJyZWFzb25pbmciLCAiY2hvaWNlcyIsICJyZW1lbWJlcmluZyIsICJ0ZW1wZXJhdHVyZSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAiY29uc2Npb3VzIiwgImRlcHRoIikpIApzY29yZXMgPC0gc2NvcmVJdGVtcyhrZXlzLmxpc3QsIGQzX2FsbCwgbWluID0gMCwgbWF4ID0gMSkgICMgb3IganVzdCB1c2UgdGhlIGtleXMubGl0CiMgc3VtbWFyeShzY29yZXMpCnNjb3JlcwoKIyBvbWVnYQpvbWVnYShkM19hbGwsIHBsb3QgPSBGKQpgYGAKCiMgU3R1ZHkgNAoKU3R1ZHkgaW5mb3JtYXRpb246CgoqIERlc2lnbjogNyBjb25kaXRpb25zIChiZWV0bGUsIHJvYm90LCAuLi4pICsgMiBmb2xsb3ctdXAgY29uZGl0aW9ucyAoZG9sbCwgdGVkZHkgYmVhciksIDMtcG9pbnQgcmVzcG9uc2Ugc2NhbGUsICJkZWNpZGUgd2hhdCB0byBkbyIgYW5kICJoYXZlIGludGVudGlvbnMiCiogUG9wdWxhdGlvbjogNC02eW8gY2hpbGRyZW4KKiBEYXRlIGNvbmR1Y3RlZDogTWFyY2ggMjAxNyAtIHByZXNlbnQKCiMjIERlbW9ncmFwaGljcwoKYGBge3IgczQgZGVtb2dyYXBoaWNzfQojIG1ha2UgZGVtb2dyYXBoaWNzIHRhYmxlcwpkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgNCIpCiMgZGVtb0R1cmF0aW9uKCJzdHVkeSA0IikKZGVtb0FnZSgic3R1ZHkgNCIpCiMgZGVtb0dlbmRlcigic3R1ZHkgNCIpCiMgZGVtb1JhY2UoInN0dWR5IDQiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyBFeHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzaXMKCiMjIyBTdGVwIDE6IFJ1biBtYXhpbWFsIEVGQSAod2l0aG91dCBhbmQgd2l0aCByb3RhdGlvbikKCmBgYHtyIHM0IGFsbCBubyByb3RhdGlvbn0KIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDRfYWxsKQoKIyBydW4gRUZBIHdpdGhvdXQgcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2Q0X2FsbF91bnJvdGF0ZWQgPC0gZmEoZDRfYWxsLCAxMywgcm90YXRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDRfYWxsX3Vucm90YXRlZCkKCiMgZXhhbWluZSBlaWdlbnZhbHVlcyBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkCmVmYV9kNF9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzIDwtIHByaW50KGVmYV9kNF9hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2Q0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMgPC0gZWZhX2Q0X2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgJT4lCiAgZmlsdGVyKFNTLmxvYWRpbmdzID4gMSwgUHJvcG9ydGlvbi5FeHBsYWluZWQgPiAwLjA1KSAlPiUKICBjb3VudCgpICU+JQogIGFzLm51bWVyaWMoKQplZmFfZDRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHM0IGFsbCByb3RhdGlvbn0KZWZhX2Q0X2FsbF9yb3RhdGVkX21heCA8LSBmYShkNF9hbGwsIDEzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKZWZhX2Q0X2FsbF9yb3RhdGVkIDwtIGZhKGQ0X2FsbCwgZWZhX2Q0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgojIGNoZWNrIHRoYXQgZWFjaCBvZiB0aGVzZSBmYWN0b3JzIGlzIHRoZSBkb21pbmFudCBmYWN0b3IgZm9yIGF0IGxlYXN0IG9uZSBtZW50YWwgY2FwYWNpdHkgaXRlbQplZmFfZDRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgPC0gZmEuc29ydChsb2FkaW5ncyhlZmFfZDRfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kNF9hbGxfcm90YXRlZF9sb2FkaW5ncwoKIyBkcm9wIGFueSBmYWN0b3JzIHdoZXJlIG4gPCAxCmVmYV9kNF9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKQoKIyBzZXQgbnVtYmVyIG9mIGZhY3RvcnMgdG8gZXh0cmFjdApuZmFjdG9yc19kNF9hbGwgPC0gZWZhX2Q0X2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApICU+JQogIG5yb3coKQpuZmFjdG9yc19kNF9hbGwKYGBgCgojIyMgU3RlcCAyOiBSdW4gRUZBIHdpdGggdmFyaW1heCByb3RhdGlvbgoKYGBge3IgczQgYWxsIHZhcmltYXggcm90YXRpb259CiMgcnVuIEVGQSB3aXRoIHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kNF9hbGxfcm90YXRlZE4gPC0gZmEoZDRfYWxsLCBuZmFjdG9yc19kNF9hbGwsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kNF9hbGxfcm90YXRlZE4pCgojIGdldCBsb2FkaW5ncyBmb3IgZWFjaCBmYWN0b3IKZWZhX2Q0X2FsbF9yb3RhdGVkTl9sb2FkaW5ncyA8LSBsb2FkaW5ncyhlZmFfZDRfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIyMgRmFjdG9yIGxvYWRpbmdzIHRhYmxlCgpgYGB7ciBzNCBsb2FkaW5ncyB0YWJsZX0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kNF9hbGxfcm90YXRlZE4pKVtdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk0iKSksIGZ1bnMocm91bmQyKSkKYGBgCgojIEJpZyBmYWN0b3IgbG9hZGluZ3MgdGFibGUgZm9yIGFsbCBzdHVkaWVzIChTdHVkaWVzIDEtNCkKCmBgYHtyIGFsbCBzdHVkaWVzIGxvYWRpbmdzIHRhYmxlfQojIG1hbnVhbGx5IHNldCAzIGZhY3RvcnMKb3JkZXJfczFfbWFudWFsIDwtIGxvYWRpbmdzKGZhLnNvcnQoZmEoZDFfYWxsLCBuZmFjdG9ycyA9IDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUpKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIxX21hbnVhbCIpICU+JQogIHJlbmFtZShzMV9oZWFydCA9IE1SMiwgczFfYm9keSA9IE1SMSwgczFfbWluZCA9IE1SMykKCm9yZGVyX3MxIDwtIGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QxX2FsbF9yb3RhdGVkTikpW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm9yZGVyMSIpICU+JQogIHJlbmFtZShzMV9oZWFydCA9IE1SMiwgczFfYm9keSA9IE1SMSwgczFfbWluZCA9IE1SMykKCm9yZGVyX3MyIDwtIGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QyX2FsbF9yb3RhdGVkTikpW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKSAlPiUKICByZW5hbWUoczJfYm9keSA9IE1SMiwgczJfaGVhcnQgPSBNUjEsIHMyX21pbmQgPSBNUjMpCgpvcmRlcl9zMyA8LSBsb2FkaW5ncyhmYS5zb3J0KGVmYV9kM19hbGxfcm90YXRlZE4pKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gImNhcGFjaXR5IikgJT4lCiAgcmVuYW1lKHMzX2JvZHkgPSBNUjEsIHMzX2hlYXJ0ID0gTVIyLCBzM19taW5kID0gTVIzKQoKb3JkZXJfczQgPC0gbG9hZGluZ3MoZmEuc29ydChlZmFfZDRfYWxsX3JvdGF0ZWROKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpICU+JQogIHJlbmFtZShzNF9ib2R5ID0gTVIxLCBzNF9oZWFydCA9IE1SMywgczRfbWluZCA9IE1SMikKCmJpZ1RhYmxlIDwtIG9yZGVyX3MxX21hbnVhbCAlPiUgIyBjb3VsZCBzdWJzdGl0dXRlIG9yZGVyX3MxCiAgZnVsbF9qb2luKG9yZGVyX3MyKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczMpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zNCkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoInMiKSksIGZ1bnMocm91bmQyKSkgJT4lCiAgc2VsZWN0KG9yZGVyMV9tYW51YWwsICMgY291bGQgc3ViaXN0aXR1dGUgb3JkZXJfczEKICAgICAgICAgY2FwYWNpdHksIGVuZHNfd2l0aCgiaGVhcnQiKSwgZW5kc193aXRoKCJib2R5IiksIGVuZHNfd2l0aCgibWluZCIpKSAKCmJpZ1RhYmxlCmBgYAoKIyBGaWd1cmVzCgpgYGB7ciBwbG90dGluZyBzZXR1cCBjaGFyYWN0ZXIgbWVhbnMsIGluY2x1ZGUgPSBGfQojIGJvb3RzdHJhcCA5NSUgQ0lzIGZvciByYXRpbmdzIGJ5IGNoYXJhY3RlciAobm9ucGFyYW1ldHJpYykKIyBzdHVkeSAxCmNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMSA8LSBkMSAlPiUgCiAgc2VsZWN0KHN1YmlkLCBjaGFyYWN0ZXIsIGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgbXVsdGlfYm9vdChjb2x1bW4gPSAicmVzcG9uc2VOdW0iLAogICAgICAgICAgICAgc3VtbWFyeV9mdW5jdGlvbiA9ICJtZWFuX25hIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiY2hhcmFjdGVyIiwgImNhcGFjaXR5IiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoImNpX2xvd2VyX25hIiwgIm1lYW5fbmEiLCAiY2lfdXBwZXJfbmEiKSkgJT4lCiAgZnVsbF9qb2luKGRlbW9TYW1wbGVTaXplKCJzdHVkeSAxIikgJT4lIGZpbHRlcihjaGFyYWN0ZXIgIT0gImFsbCIpKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgMSIpCgojIHN0dWR5IDIKY2hhcl9wbG90dGluZ19yYXRpbmdzX3MyIDwtIGQyICU+JSAKICBzZWxlY3Qoc3ViaWQsIGNoYXJhY3RlciwgY2FwYWNpdHksIHJlc3BvbnNlTnVtKSAlPiUKICBtdWx0aV9ib290KGNvbHVtbiA9ICJyZXNwb25zZU51bSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2Z1bmN0aW9uID0gIm1lYW5fbmEiLAogICAgICAgICAgICAgc3VtbWFyeV9ncm91cHMgPSBjKCJjaGFyYWN0ZXIiLCAiY2FwYWNpdHkiKSwKICAgICAgICAgICAgIHN0YXRpc3RpY3NfZnVuY3Rpb25zID0gYygiY2lfbG93ZXJfbmEiLCAibWVhbl9uYSIsICJjaV91cHBlcl9uYSIpKSAlPiUKICBmdWxsX2pvaW4oZGVtb1NhbXBsZVNpemUoInN0dWR5IDIiKSAlPiUgZmlsdGVyKGNoYXJhY3RlciAhPSAiYWxsIikpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAyIikKCiMgc3R1ZHkgMwpjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczMgPC0gZDMgJT4lIAogIHNlbGVjdChzdWJpZCwgY2hhcmFjdGVyLCBjYXBhY2l0eSwgcmVzcG9uc2VOdW0pICU+JQogIG11bHRpX2Jvb3QoY29sdW1uID0gInJlc3BvbnNlTnVtIiwKICAgICAgICAgICAgIHN1bW1hcnlfZnVuY3Rpb24gPSAibWVhbl9uYSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2dyb3VwcyA9IGMoImNoYXJhY3RlciIsICJjYXBhY2l0eSIpLAogICAgICAgICAgICAgc3RhdGlzdGljc19mdW5jdGlvbnMgPSBjKCJjaV9sb3dlcl9uYSIsICJtZWFuX25hIiwgImNpX3VwcGVyX25hIikpICU+JQogIGZ1bGxfam9pbihkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgMyIpICU+JSBmaWx0ZXIoY2hhcmFjdGVyICE9ICJhbGwiKSkgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDMiKQoKIyBzdHVkeSA0CmNoYXJfcGxvdHRpbmdfcmF0aW5nc19zNCA8LSBkNCAlPiUgCiAgc2VsZWN0KHN1YmlkLCBjaGFyYWN0ZXIsIGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgbXVsdGlfYm9vdChjb2x1bW4gPSAicmVzcG9uc2VOdW0iLAogICAgICAgICAgICAgc3VtbWFyeV9mdW5jdGlvbiA9ICJtZWFuX25hIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiY2hhcmFjdGVyIiwgImNhcGFjaXR5IiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoImNpX2xvd2VyX25hIiwgIm1lYW5fbmEiLCAiY2lfdXBwZXJfbmEiKSkgJT4lCiAgZnVsbF9qb2luKGRlbW9TYW1wbGVTaXplKCJzdHVkeSA0IikgJT4lIGZpbHRlcihjaGFyYWN0ZXIgIT0gImFsbCIpKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgNCIpCmBgYAoKYGBge3IgcGxvdHRpbmcgc2V0dXAgY2hhcmFjdGVyIG1lYW5zIG1lcmdlLCBpbmNsdWRlID0gRn0KY2hhcl9wbG90dGluZ19yYXRpbmdzX2FsbCA8LSBjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczEgJT4lCiAgZnVsbF9qb2luKGNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMikgJT4lCiAgZnVsbF9qb2luKGNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMykgJT4lCiAgZnVsbF9qb2luKGNoYXJfcGxvdHRpbmdfcmF0aW5nc19zNCkgJT4lCiAgZmlsdGVyKCFpcy5uYShjaGFyYWN0ZXIpKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgbXV0YXRlKHN0dWR5ID0gZmFjdG9yKHN0dWR5KSwKICAgICAgICAgY29uZGl0aW9uID0gZmFjdG9yKGNoYXJhY3RlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbXB1dGVyIiwgImRvbGwiLCAidGVkZHlfYmVhciIsICJyb2JvdCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSkKYGBgCgpgYGB7ciBwbG90dGluZyBzZXR1cCBjYXBhY2l0eSB3b3JkaW5ncywgaW5jbHVkZSA9IEZ9CmNoYXJfcGxvdHRpbmdfd29yZGluZ3MgPC0gY2hhcl9wbG90dGluZ19yYXRpbmdzX2FsbCAlPiUKICB1bmdyb3VwKCkgJT4lCiAgc2VsZWN0KGNhcGFjaXR5KSAlPiUKICBkaXN0aW5jdCgpICU+JSAKICBtdXRhdGUod29yZGluZyA9IGZhY3RvcigKICAgIHJlY29kZShjYXBhY2l0eSwKICAgICAgICAgICBoYXBweSA9ICJmZWVsIGhhcHB5IiwKICAgICAgICAgICBkZXByZXNzZWQgPSAiZmVlbCBzYWQiLAogICAgICAgICAgIGZlYXIgPSAiZmVlbCBzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImdldCBhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJmZWVsIGNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIHNvdW5kcyIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSB0aGluZ3MiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInNlbnNlIHRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwgdGhpbmdzIiwKICAgICAgICAgICBkZXB0aCA9ICJzZW5zZS4uLiBjbG9zZSBieSBvciBmYXIgYXdheSIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gImRvIG1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gImhhdmUgdGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGluZ3MiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIHRoaW5ncyIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJoYXZlIGJlbGllZnMuLi4iLAogICAgICAgICAgIGh1bmdyeSA9ICJnZXQgaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJmZWVsIHRpcmVkIiwKICAgICAgICAgICBwYWluID0gImZlZWwgcGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gImZlZWwgc2ljay4uLiIsCiAgICAgICAgICAgc2FmZSA9ICJmZWVsIHNhZmUiLAogICAgICAgICAgIGxvdmUgPSAiZmVlbCBsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUgc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSB3aXRoIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGd1aWx0ID0gImZlZWwgZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiZ2V0IGh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUgd2hhdCB0byBkbyIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJtYWtlIGNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gImhhdmUgc2VsZi1jb250cm9sLi4uIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gIm1ha2UgcGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiaGF2ZSBnb2Fscy4uLiIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImJlIGF3YXJlIG9mIHRoaW5ncyIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJiZSBhd2FyZSBvZiBpdHNlbGYiLAogICAgICAgICAgIGRlc2lyZXMgPSAiaGF2ZSBkZXNpcmVzLi4uIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJmZWVsIGVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAidW5kZXJzdGFuZCBob3cgc29tZWJvZHkgZWxzZSBpcyBmZWVsaW5nIiwKICAgICAgICAgICBqb3kgPSAiZmVlbCBqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gImtub3cgd2hhdCdzIG5pY2UgYW5kIHdoYXQncyBtZWFuIiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJoYXZlIGEgcGVyc29uYWxpdHkuLi4iLAogICAgICAgICAgIHBsZWFzdXJlID0gImZlZWwgcGxlYXN1cmUuLi4iLAogICAgICAgICAgIHByb3VkID0gImZlZWwgcHJvdWQiKSkpCmBgYAoKYGBge3IgcGxvdHRpbmcgc2V0dXAgbG9hZGluZ3MsIGluY2x1ZGUgPSBGfQojIG1lcmdlIHdpdGggbG9hZGluZ3MsIG9yZGVyaW5ncywgYW5kIGRvbWluYW50IGZhY3RvcnMgZnJvbSBlYWNoIHN0dWR5IApjaGFyX3Bsb3R0aW5nIDwtIGNoYXJfcGxvdHRpbmdfcmF0aW5nc19hbGwgJT4lCiAgZnVsbF9qb2luKGNoYXJfcGxvdHRpbmdfd29yZGluZ3MpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zMSAlPiUKICAgICAgICAgICAgICByZW5hbWUoczFfTVIxID0gczFfYm9keSwgczFfTVIyID0gczFfaGVhcnQsIHMxX01SMyA9IHMxX21pbmQpICU+JQogICAgICAgICAgICAgIG11dGF0ZShzMV9NUjFfYWJzID0gYWJzKHMxX01SMSksCiAgICAgICAgICAgICAgICAgICAgIHMxX01SMl9hYnMgPSBhYnMoczFfTVIyKSwKICAgICAgICAgICAgICAgICAgICAgczFfTVIzX2FicyA9IGFicyhzMV9NUjMpLAogICAgICAgICAgICAgICAgICAgICBzMV9mYWN0b3IgPSAKICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczFfTVIxX2FicyA+IHMxX01SMl9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX01SMV9hYnMgPiBzMV9NUjNfYWJzLCAiQk9EWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMV9NUjJfYWJzID4gczFfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX01SMl9hYnMgPiBzMV9NUjNfYWJzLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMxX01SM19hYnMgPiBzMV9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX01SM19hYnMgPiBzMV9NUjJfYWJzLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICAgICAgICAgICAgICAgICAgIHMxX2NvbG9yID0gcmVjb2RlKHMxX2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJPRFkiID0gIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQiID0gIiMzNzdFQjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIgPSAiIzREQUY0QSIpLAogICAgICAgICAgICAgICAgICAgICBzMV9vcmRlciA9IGFzLm51bWVyaWMob3JkZXIxKSkgJT4lCiAgICAgICAgICAgICAgc2VsZWN0KC1zMV9NUjFfYWJzLCAtczFfTVIyX2FicywgLXMxX01SM19hYnMpKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczIgJT4lCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JQogICAgICAgICAgICAgIHJlbmFtZShzMl9NUjEgPSBzMl9oZWFydCwgczJfTVIyID0gczJfYm9keSwgczJfTVIzID0gczJfbWluZCkgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHMyX01SMV9hYnMgPSBhYnMoczJfTVIxKSwKICAgICAgICAgICAgICAgICAgICAgczJfTVIyX2FicyA9IGFicyhzMl9NUjIpLAogICAgICAgICAgICAgICAgICAgICBzMl9NUjNfYWJzID0gYWJzKHMyX01SMyksCiAgICAgICAgICAgICAgICAgICAgIHMyX2ZhY3RvciA9IAogICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMl9NUjFfYWJzID4gczJfTVIyX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczJfTVIxX2FicyA+IHMyX01SM19hYnMsICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMyX01SMl9hYnMgPiBzMl9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczJfTVIyX2FicyA+IHMyX01SM19hYnMsICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczJfTVIzX2FicyA+IHMyX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczJfTVIzX2FicyA+IHMyX01SMl9hYnMsICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgICAgICAgICAgICAgICAgICAgczJfY29sb3IgPSByZWNvZGUoczJfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIiA9ICIjNERBRjRBIikpICU+JQogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiczJfb3JkZXIiKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczJfb3JkZXIgPSBhcy5udW1lcmljKHMyX29yZGVyKSkgJT4lCiAgICAgICAgICAgICAgc2VsZWN0KC1zMl9NUjFfYWJzLCAtczJfTVIyX2FicywgLXMyX01SM19hYnMpKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczMgJT4lCiAgICAgICAgICAgICAgcmVuYW1lKHMzX01SMSA9IHMzX2hlYXJ0LCBzM19NUjIgPSBzM19ib2R5LCBzM19NUjMgPSBzM19taW5kKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczNfTVIxX2FicyA9IGFicyhzM19NUjEpLAogICAgICAgICAgICAgICAgICAgICBzM19NUjJfYWJzID0gYWJzKHMzX01SMiksCiAgICAgICAgICAgICAgICAgICAgIHMzX01SM19hYnMgPSBhYnMoczNfTVIzKSwKICAgICAgICAgICAgICAgICAgICAgczNfZmFjdG9yID0gCiAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMzX01SMV9hYnMgPiBzM19NUjJfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzM19NUjFfYWJzID4gczNfTVIzX2FicywgIkJPRFkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczNfTVIyX2FicyA+IHMzX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzM19NUjJfYWJzID4gczNfTVIzX2FicywgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzM19NUjNfYWJzID4gczNfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzM19NUjNfYWJzID4gczNfTVIyX2FicywgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAogICAgICAgICAgICAgICAgICAgICBzM19jb2xvciA9IHJlY29kZShzM19mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCT0RZIiA9ICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQVJUIiA9ICIjMzc3RUI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQiID0gIiM0REFGNEEiKSkgJT4lCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJzM19vcmRlciIpICU+JQogICAgICAgICAgICAgIG11dGF0ZShzM19vcmRlciA9IGFzLm51bWVyaWMoczNfb3JkZXIpKSAlPiUKICAgICAgICAgICAgICBzZWxlY3QoLXMzX01SMV9hYnMsIC1zM19NUjJfYWJzLCAtczNfTVIzX2FicykpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zNCAlPiUKICAgICAgICAgICAgICByZW5hbWUoczRfTVIxID0gczRfYm9keSwgczRfTVIyID0gczRfbWluZCwgczRfTVIzID0gczRfaGVhcnQpICU+JQogICAgICAgICAgICAgIG11dGF0ZShzNF9NUjFfYWJzID0gYWJzKHM0X01SMSksCiAgICAgICAgICAgICAgICAgICAgIHM0X01SMl9hYnMgPSBhYnMoczRfTVIyKSwKICAgICAgICAgICAgICAgICAgICAgczRfTVIzX2FicyA9IGFicyhzNF9NUjMpLAogICAgICAgICAgICAgICAgICAgICBzNF9mYWN0b3IgPSAKICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczRfTVIxX2FicyA+IHM0X01SMl9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM0X01SMV9hYnMgPiBzNF9NUjNfYWJzLCAiQk9EWSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzNF9NUjJfYWJzID4gczRfTVIxX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM0X01SMl9hYnMgPiBzNF9NUjNfYWJzLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHM0X01SM19hYnMgPiBzNF9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM0X01SM19hYnMgPiBzNF9NUjJfYWJzLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICAgICAgICAgICAgICAgICAgIHM0X2NvbG9yID0gcmVjb2RlKHM0X2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJPRFkiID0gIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQiID0gIiMzNzdFQjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIgPSAiIzREQUY0QSIpKSAlPiUKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4odmFyID0gInM0X29yZGVyIikgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHM0X29yZGVyID0gYXMubnVtZXJpYyhzNF9vcmRlcikpICU+JQogICAgICAgICAgICAgIHNlbGVjdCgtczRfTVIxX2FicywgLXM0X01SMl9hYnMsIC1zNF9NUjNfYWJzKSkKCiMgY29uZmlndXJlIHBsb3QgbGFiZWxzCmxhYmVsX2RmX3MxIDwtIGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMSIpICU+JSBzZWxlY3QoY29uZGl0aW9uLCBuKSAlPiUgdW5pcXVlKCkKbGFiZWxfZGZfczIgPC0gY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAyIikgJT4lIHNlbGVjdChjb25kaXRpb24sIG4pICU+JSB1bmlxdWUoKQpsYWJlbF9kZl9zMyA8LSBjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDMiKSAlPiUgc2VsZWN0KGNvbmRpdGlvbiwgbikgJT4lIHVuaXF1ZSgpCmxhYmVsX2RmX3M0IDwtIGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgNCIpICU+JSBzZWxlY3QoY29uZGl0aW9uLCBuKSAlPiUgdW5pcXVlKCkKCmZhY2V0TGFic19zMSA8LSBnc3ViKCIgXFwoIiwgIlxuKCIsIG1ha2VGYWNldExhYnMoY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAxIikpKQpmYWNldExhYnNfczIgPC0gZ3N1YigiIFxcKCIsICJcbigiLCBtYWtlRmFjZXRMYWJzKGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMiIpKSkKZmFjZXRMYWJzX3MzIDwtIGdzdWIoIiBcXCgiLCAiXG4oIiwgbWFrZUZhY2V0TGFicyhjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDMiKSkpCmZhY2V0TGFic19zNCA8LSBnc3ViKCIgXFwoIiwgIlxuKCIsIG1ha2VGYWNldExhYnMoY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSA0IikpKQoKIyBjb25maWd1cmUgY3VzdG9tIHBhbGV0dGUKbXlQYWxldHRlIDwtIGJyZXdlci5wYWwoMywgIlNldDEiKTsgbmFtZXMobXlQYWxldHRlKSA8LSBjKCJCT0RZIiwgIkhFQVJUIiwgIk1JTkQiKQoKcGFsZXR0ZV9iYXNlIDwtIGNoYXJfcGxvdHRpbmcgJT4lIAogIHNlbGVjdChjYXBhY2l0eSwgZW5kc193aXRoKCJfZmFjdG9yIikpICU+JQogIGRpc3RpbmN0KCkKIyBhZGp1c3QgYnkgaGFuZCBkZXBlbmRpbmcgb24gb3JkZXIgb2YgZmFjdG9ycyEhCnBhbGV0dGVfczEgPC0gYyhyZXAobXlQYWxldHRlWyJNSU5EIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMxX2ZhY3RvciA9PSAiTUlORCIpICU+JSBjb3VudCgpKSwKICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkhFQVJUIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMxX2ZhY3RvciA9PSAiSEVBUlQiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJCT0RZIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMxX2ZhY3RvciA9PSAiQk9EWSIpICU+JSBjb3VudCgpKSkKcGFsZXR0ZV9zMiA8LSBjKHJlcChteVBhbGV0dGVbIk1JTkQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczJfZmFjdG9yID09ICJNSU5EIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiQk9EWSJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMl9mYWN0b3IgPT0gIkJPRFkiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJIRUFSVCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMl9mYWN0b3IgPT0gIkhFQVJUIikgJT4lIGNvdW50KCkpKQpwYWxldHRlX3MzIDwtIGMocmVwKG15UGFsZXR0ZVsiTUlORCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzM19mYWN0b3IgPT0gIk1JTkQiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJCT0RZIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMzX2ZhY3RvciA9PSAiQk9EWSIpICU+JSBjb3VudCgpKSwKICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkhFQVJUIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMzX2ZhY3RvciA9PSAiSEVBUlQiKSAlPiUgY291bnQoKSkpCiMgcGFsZXR0ZV9zNCA8LSBjKHJlcChteVBhbGV0dGVbIk1JTkQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczRfZmFjdG9yID09ICJNSU5EIikgJT4lIGNvdW50KCkpLAojICAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJIRUFSVCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzNF9mYWN0b3IgPT0gIkhFQVJUIikgJT4lIGNvdW50KCkpLAojICAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJCT0RZIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHM0X2ZhY3RvciA9PSAiQk9EWSIpICU+JSBjb3VudCgpKSkKYGBgCgojIyAzRCBzY2F0dGVycGxvdHMKCkZhY3RvciBsb2FkaW5ncyBmb3IgdGhlIDQwIG1lbnRhbCBjYXBhY2l0aWVzIG9uIHRoZSB0aHJlZSByb3RhdGVkIGZhY3RvcnMgaW4gU3R1ZHkgMS4gSXRlbXMgYXJlIGNvbG9yZWQgYnkgdGhlaXIgZG9taW5hbnQgZmFjdG9yIGxvYWRpbmc6IEl0ZW1zIHRoYXQgbG9hZGVkIG1vc3Qgc3Ryb25nbHkgb24gdGhlIGJvZHkgZmFjdG9yIChib2RpbHkgc3RhdGVzIGFuZCB3aWxsKSBhcmUgaW4gcmVkOyBpdGVtcyB0aGF0IGxvYWRlZCBtb3N0IHN0cm9uZ2x5IG9uIHRoZSBoZWFydCBmYWN0b3IgKHNvY2lhbC1lbW90aW9uYWwgZXhwZXJpZW5jZXMgYW5kIG1vcmFsaXR5KSBhcmUgaW4gYmx1ZTsgYW5kIGl0ZW1zIHRoYXQgbG9hZGVkIG1vc3Qgc3Ryb25nbHkgb24gdGhlIG1pbmQgZmFjdG9yIChwZXJjZXB0dWFsLWNvZ25pdGl2ZSBhYmlsaXRpZXMgYW5kIGdvYWwgcHVyc3VpdCkgYXJlIGluIGdyZWVuLgoKIyMjIFN0dWR5IDEgKGFkdWx0cykKCmBgYHtyIGZpZ3VyZSAzZCBzY2F0dGVyIHMxfQojIHNldCB1cCBsYWJlbHMgZm9yIHBsb3QgKHNob3J0ZW5lZCB2ZXJzaW9uIG9mIG1lbnRhbCBjYXBhY2l0eSBpdGVtcykKd29yZGluZ19zMSA8LSBsb2FkaW5ncyhlZmFfZDFfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBzZWxlY3QoaXRlbSkgJT4lCiAgbXV0YXRlKHdvcmRpbmcgPSBmYWN0b3IoCiAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICBoYXBweSA9ICJmZWVsIGhhcHB5IiwKICAgICAgICAgICBkZXByZXNzZWQgPSAiZmVlbCBzYWQiLAogICAgICAgICAgIGZlYXIgPSAiZmVlbCBzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImdldCBhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJmZWVsIGNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIHNvdW5kcyIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSB0aGluZ3MiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInNlbnNlIHRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwgdGhpbmdzIiwKICAgICAgICAgICBkZXB0aCA9ICJzZW5zZSB3aGV0aGVyIHNvbWV0aGluZyBpcyBjbG9zZSBieSBvciBmYXIgYXdheSIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gImRvIG1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gImhhdmUgdGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGluZ3MiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIHRoaW5ncyIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJoYXZlIGJlbGllZnMsIGxpa2Ugd2hlbiB5b3UgdGhpbmsgc29tZXRoaW5nIGlzIHRydWUiLAogICAgICAgICAgIGh1bmdyeSA9ICJnZXQgaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJmZWVsIHRpcmVkIiwKICAgICAgICAgICBwYWluID0gImZlZWwgcGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gImZlZWwgc2ljaywgbGlrZSB3aGVuIHlvdSBmZWVsIGxpa2UgeW91IG1pZ2h0IHRocm93IHVwIiwKICAgICAgICAgICBzYWZlID0gImZlZWwgc2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJmZWVsIGxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIHdpdGggc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZmVlbCBndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJnZXQgaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSB3aGF0IHRvIGRvIiwKICAgICAgICAgICBjaG9pY2VzID0gIm1ha2UgY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAiaGF2ZSBzZWxmLWNvbnRyb2wsIGxpa2Ugd2hlbiB5b3Ugc3RvcCB5b3Vyc2VsZiBmcm9tIGRvaW5nIHNvbWV0aGluZyB5b3Ugc2hvdWxkbid0IGRvIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gIm1ha2UgcGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiaGF2ZSBnb2FscywgbGlrZSB3aGVuIHlvdSdyZSB3b3JraW5nIGhhcmQgdG8gZG8gc29tZXRoaW5nIG9yIG1ha2Ugc29tZXRoaW5nIGhhcHBlbiIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImJlIGF3YXJlIG9mIHRoaW5ncyIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJiZSBhd2FyZSBvZiBpdHNlbGYiLAogICAgICAgICAgIGRlc2lyZXMgPSAiaGF2ZSBkZXNpcmVzLCBsaWtlIHdoZW4geW91IHJlYWxseSB3YW50IHNvbWV0aGluZyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZmVlbCBlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gInVuZGVyc3RhbmQgaG93IHNvbWVib2R5IGVsc2UgaXMgZmVlbGluZyIsCiAgICAgICAgICAgam95ID0gImZlZWwgam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJrbm93IHdoYXQncyBuaWNlIGFuZCB3aGF0J3MgbWVhbiIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAiaGF2ZSBhIHBlcnNvbmFsaXR5LCBsaWtlIHdoZW4gc29tZW9uZSBpcyBzaHkgYW5kIHNvbWVib2R5IGVsc2UgaXMgc2lsbHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gImZlZWwgcGxlYXN1cmUsIGxpa2Ugd2hlbiBzb21ldGhpbmcgZmVlbHMgcmVhbGx5IGdvb2QiLAogICAgICAgICAgIHByb3VkID0gImZlZWwgcHJvdWQiKSkpICU+JQogICAgbXV0YXRlKHNob3J0ID0gZmFjdG9yKAogICAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICAgIGhhcHB5ID0gImhhcHB5IiwKICAgICAgICAgICAgIGRlcHJlc3NlZCA9ICJzYWQiLAogICAgICAgICAgIGZlYXIgPSAic2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAidGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCIsCiAgICAgICAgICAgZGVwdGggPSAiZGVwdGgiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJ0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIiwKICAgICAgICAgICBiZWxpZWZzID0gImJlbGllZnMiLAogICAgICAgICAgIGh1bmdyeSA9ICJodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gInRpcmVkIiwKICAgICAgICAgICBwYWluID0gInBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJzaWNrIiwKICAgICAgICAgICBzYWZlID0gInNhZmUiLAogICAgICAgICAgIGxvdmUgPSAibG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIiwKICAgICAgICAgICBndWlsdCA9ICJndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIiwKICAgICAgICAgICBjaG9pY2VzID0gImNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gInNlbGYtY29udHJvbCIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJnb2FscyIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImF3YXJlIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gInNlbGYtYXdhcmUiLAogICAgICAgICAgIGRlc2lyZXMgPSAiZGVzaXJlcyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJlbXBhdGh5IiwKICAgICAgICAgICBqb3kgPSAiam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJtb3JhbGl0eSIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAicGVyc29uYWxpdHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gInBsZWFzdXJlIiwKICAgICAgICAgICBwcm91ZCA9ICJwcm91ZCIpKSkKCiMgbWFrZSBkYXRhZnJhbWUgZm9yIHBsb3R0aW5nCnNjYXR0ZXJfcGxvdHRpbmcgPC0gbG9hZGluZ3MoZWZhX2QxX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgcmVuYW1lKEJPRFkgPSBNUjEsCiAgICAgICAgIEhFQVJUID0gTVIyLAogICAgICAgICBNSU5EID0gTVIzKSAlPiUKICBmdWxsX2pvaW4od29yZGluZ19zMSkgJT4lCiAgbXV0YXRlKGRvbWluYW50ID0gZmFjdG9yKAogICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgIkJPRFkiLAogICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSksCiAgICBzaXplID0gaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgYWJzKEJPRFkpLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgYWJzKEhFQVJUKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksIGFicyhNSU5EKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgIGNvbG9yID0gaWZlbHNlKGRvbWluYW50ID09ICJCT0RZIiwgIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJIRUFSVCIsICIjMzc3RUI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIk1JTkQiLCAiIzREQUY0QSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKQoKIyBwbG90IQpmaWdTMSA8LSBwbG90X2x5KHNjYXR0ZXJfcGxvdHRpbmcsIHggPSBIRUFSVCwgeSA9IEJPRFksIHogPSBNSU5ELAogICAgICAgICAgICAgdHlwZSA9ICJzY2F0dGVyM2QiLAogICAgICAgICAgICAgY29sb3IgPSBkb21pbmFudCwgY29sb3JzID0gYygiIzM3N0VCOCIsICIjNERBRjRBIiwgIiNFNDFBMUMiKSwKICAgICAgICAgICAgIG1hcmtlciA9IGxpc3Qoc2l6ZSA9IDQpLAogICAgICAgICAgICAgdGV4dCA9IHNob3J0LAogICAgICAgICAgICAgdGV4dGZvbnQgPSBsaXN0KHNpemUgPSAxNSksCiAgICAgICAgICAgICBtb2RlID0gInRleHQrbWFya2VycyIsCiAgICAgICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkKCmZpZ1MxCmBgYAoKIyMjIFN0dWR5IDIgKDctOXlvKQoKYGBge3IgZmlndXJlIDNkIHNjYXR0ZXIgczJ9CiMgc2V0IHVwIGxhYmVscyBmb3IgcGxvdCAoc2hvcnRlbmVkIHZlcnNpb24gb2YgbWVudGFsIGNhcGFjaXR5IGl0ZW1zKQp3b3JkaW5nX3MyIDwtIGxvYWRpbmdzKGVmYV9kMl9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHNlbGVjdChpdGVtKSAlPiUKICBtdXRhdGUod29yZGluZyA9IGZhY3RvcigKICAgIHJlY29kZShpdGVtLAogICAgICAgICAgIGhhcHB5ID0gImZlZWwgaGFwcHkiLAogICAgICAgICAgIGRlcHJlc3NlZCA9ICJmZWVsIHNhZCIsCiAgICAgICAgICAgZmVhciA9ICJmZWVsIHNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiZ2V0IGFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImZlZWwgY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIgc291bmRzIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIHRoaW5ncyIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAic2Vuc2UgdGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCB0aGluZ3MiLAogICAgICAgICAgIGRlcHRoID0gInNlbnNlIHdoZXRoZXIgc29tZXRoaW5nIGlzIGNsb3NlIGJ5IG9yIGZhciBhd2F5IiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAiZG8gbWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAiaGF2ZSB0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQgaG93IHRvIGRvIHRoaW5ncyIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIgdGhpbmdzIiwKICAgICAgICAgICBiZWxpZWZzID0gImhhdmUgYmVsaWVmcywgbGlrZSB3aGVuIHlvdSB0aGluayBzb21ldGhpbmcgaXMgdHJ1ZSIsCiAgICAgICAgICAgaHVuZ3J5ID0gImdldCBodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gImZlZWwgdGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAiZmVlbCBwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAiZmVlbCBzaWNrLCBsaWtlIHdoZW4geW91IGZlZWwgbGlrZSB5b3UgbWlnaHQgdGhyb3cgdXAiLAogICAgICAgICAgIHNhZmUgPSAiZmVlbCBzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImZlZWwgbG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUgd2l0aCBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBndWlsdCA9ICJmZWVsIGd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImdldCBodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIHdoYXQgdG8gZG8iLAogICAgICAgICAgIGNob2ljZXMgPSAibWFrZSBjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJoYXZlIHNlbGYtY29udHJvbCwgbGlrZSB3aGVuIHlvdSBzdG9wIHlvdXJzZWxmIGZyb20gZG9pbmcgc29tZXRoaW5nIHlvdSBzaG91bGRuJ3QgZG8iLAogICAgICAgICAgIGludGVudGlvbnMgPSAibWFrZSBwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJoYXZlIGdvYWxzLCBsaWtlIHdoZW4geW91J3JlIHdvcmtpbmcgaGFyZCB0byBkbyBzb21ldGhpbmcgb3IgbWFrZSBzb21ldGhpbmcgaGFwcGVuIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYmUgYXdhcmUgb2YgdGhpbmdzIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gImJlIGF3YXJlIG9mIGl0c2VsZiIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJoYXZlIGRlc2lyZXMsIGxpa2Ugd2hlbiB5b3UgcmVhbGx5IHdhbnQgc29tZXRoaW5nIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJmZWVsIGVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAidW5kZXJzdGFuZCBob3cgc29tZWJvZHkgZWxzZSBpcyBmZWVsaW5nIiwKICAgICAgICAgICBqb3kgPSAiZmVlbCBqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gImtub3cgd2hhdCdzIG5pY2UgYW5kIHdoYXQncyBtZWFuIiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJoYXZlIGEgcGVyc29uYWxpdHksIGxpa2Ugd2hlbiBzb21lb25lIGlzIHNoeSBhbmQgc29tZWJvZHkgZWxzZSBpcyBzaWxseSIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAiZmVlbCBwbGVhc3VyZSwgbGlrZSB3aGVuIHNvbWV0aGluZyBmZWVscyByZWFsbHkgZ29vZCIsCiAgICAgICAgICAgcHJvdWQgPSAiZmVlbCBwcm91ZCIpKSkgJT4lCiAgICBtdXRhdGUoc2hvcnQgPSBmYWN0b3IoCiAgICAgIHJlY29kZShpdGVtLAogICAgICAgICAgICAgaGFwcHkgPSAiaGFwcHkiLAogICAgICAgICAgICAgZGVwcmVzc2VkID0gInNhZCIsCiAgICAgICAgICAgZmVhciA9ICJzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImFuZ3J5IiwKICAgICAgICAgICBjYWxtID0gImNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIiwKICAgICAgICAgICBzZWVpbmcgPSAic2VlIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJ0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIiwKICAgICAgICAgICBkZXB0aCA9ICJkZXB0aCIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gIm1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gInRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXIiLAogICAgICAgICAgIGJlbGllZnMgPSAiYmVsaWVmcyIsCiAgICAgICAgICAgaHVuZ3J5ID0gImh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAidGlyZWQiLAogICAgICAgICAgIHBhaW4gPSAicGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gInNpY2siLAogICAgICAgICAgIHNhZmUgPSAic2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUiLAogICAgICAgICAgIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGUiLAogICAgICAgICAgIGd1aWx0ID0gImd1aWx0eSIsCiAgICAgICAgICAgZGlzcmVzcGVjdGVkID0gImh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUiLAogICAgICAgICAgIGNob2ljZXMgPSAiY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAic2VsZi1jb250cm9sIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gInBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImdvYWxzIiwKICAgICAgICAgICBjb25zY2lvdXMgPSAiYXdhcmUiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAic2VsZi1hd2FyZSIsCiAgICAgICAgICAgZGVzaXJlcyA9ICJkZXNpcmVzIiwKICAgICAgICAgICBlbWJhcnJhc3NlZCA9ICJlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gImVtcGF0aHkiLAogICAgICAgICAgIGpveSA9ICJqb3kiLAogICAgICAgICAgIG1vcmFsaXR5ID0gIm1vcmFsaXR5IiwKICAgICAgICAgICBwZXJzb25hbGl0eSA9ICJwZXJzb25hbGl0eSIsCiAgICAgICAgICAgcGxlYXN1cmUgPSAicGxlYXN1cmUiLAogICAgICAgICAgIHByb3VkID0gInByb3VkIikpKQoKIyBtYWtlIGRhdGFmcmFtZSBmb3IgcGxvdHRpbmcKc2NhdHRlcl9wbG90dGluZyA8LSBsb2FkaW5ncyhlZmFfZDJfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICByZW5hbWUoQk9EWSA9IE1SMSwKICAgICAgICAgSEVBUlQgPSBNUjIsCiAgICAgICAgIE1JTkQgPSBNUjMpICU+JQogIGZ1bGxfam9pbih3b3JkaW5nX3MyKSAlPiUKICBtdXRhdGUoZG9taW5hbnQgPSBmYWN0b3IoCiAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCAiQk9EWSIsCiAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKSwKICAgIHNpemUgPSBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEJPRFkpLCBhYnMoQk9EWSksCiAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCBhYnMoSEVBUlQpLAogICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgYWJzKE1JTkQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpLAogICAgY29sb3IgPSBpZmVsc2UoZG9taW5hbnQgPT0gIkJPRFkiLCAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIkhFQVJUIiwgIiM0REFGNEEiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiTUlORCIsICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpCgojIHBsb3QhCmZpZ1MyIDwtIHBsb3RfbHkoc2NhdHRlcl9wbG90dGluZywgeCA9IEhFQVJULCB5ID0gQk9EWSwgeiA9IE1JTkQsCiAgICAgICAgICAgICB0eXBlID0gInNjYXR0ZXIzZCIsCiAgICAgICAgICAgICBjb2xvciA9IGRvbWluYW50LCBjb2xvcnMgPSBjKCIjMzc3RUI4IiwgIiM0REFGNEEiLCAiI0U0MUExQyIpLAogICAgICAgICAgICAgbWFya2VyID0gbGlzdChzaXplID0gNCksCiAgICAgICAgICAgICB0ZXh0ID0gc2hvcnQsCiAgICAgICAgICAgICB0ZXh0Zm9udCA9IGxpc3Qoc2l6ZSA9IDE1KSwKICAgICAgICAgICAgIG1vZGUgPSAidGV4dCttYXJrZXJzIiwKICAgICAgICAgICAgIHNob3dsZWdlbmQgPSBUUlVFKQoKZmlnUzIKYGBgCgojIyMgU3R1ZHkgMyAoNy05eW8pCgpgYGB7ciBmaWd1cmUgM2Qgc2NhdHRlciBzM30KIyBzZXQgdXAgbGFiZWxzIGZvciBwbG90IChzaG9ydGVuZWQgdmVyc2lvbiBvZiBtZW50YWwgY2FwYWNpdHkgaXRlbXMpCndvcmRpbmdfczMgPC0gbG9hZGluZ3MoZWZhX2QzX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgc2VsZWN0KGl0ZW0pICU+JQogIG11dGF0ZSh3b3JkaW5nID0gZmFjdG9yKAogICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgaGFwcHkgPSAiZmVlbCBoYXBweSIsCiAgICAgICAgICAgZGVwcmVzc2VkID0gImZlZWwgc2FkIiwKICAgICAgICAgICBmZWFyID0gImZlZWwgc2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJnZXQgYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiZmVlbCBjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciBzb3VuZHMiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUgdGhpbmdzIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJzZW5zZSB0ZW1wZXJhdHVyZXMiLAogICAgICAgICAgIG9kb3JzID0gInNtZWxsIHRoaW5ncyIsCiAgICAgICAgICAgZGVwdGggPSAic2Vuc2Ugd2hldGhlciBzb21ldGhpbmcgaXMgY2xvc2UgYnkgb3IgZmFyIGF3YXkiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJkbyBtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJoYXZlIHRob3VnaHRzIiwKICAgICAgICAgICByZWFzb25pbmcgPSAiZmlndXJlIG91dCBob3cgdG8gZG8gdGhpbmdzIiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciB0aGluZ3MiLAogICAgICAgICAgIGJlbGllZnMgPSAiaGF2ZSBiZWxpZWZzLCBsaWtlIHdoZW4geW91IHRoaW5rIHNvbWV0aGluZyBpcyB0cnVlIiwKICAgICAgICAgICBodW5ncnkgPSAiZ2V0IGh1bmdyeSIsCiAgICAgICAgICAgdGlyZWQgPSAiZmVlbCB0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJmZWVsIHBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJmZWVsIHNpY2ssIGxpa2Ugd2hlbiB5b3UgZmVlbCBsaWtlIHlvdSBtaWdodCB0aHJvdyB1cCIsCiAgICAgICAgICAgc2FmZSA9ICJmZWVsIHNhZmUiLAogICAgICAgICAgIGxvdmUgPSAiZmVlbCBsb3ZlIiwKICAgICAgICAgICByZWNvZ25pemluZyA9ICJyZWNvZ25pemUgc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSB3aXRoIHNvbWVib2R5IGVsc2UiLAogICAgICAgICAgIGd1aWx0ID0gImZlZWwgZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiZ2V0IGh1cnQgZmVlbGluZ3MiLAogICAgICAgICAgIGZyZWVfd2lsbCA9ICJkZWNpZGUgd2hhdCB0byBkbyIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJtYWtlIGNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gImhhdmUgc2VsZi1jb250cm9sLCBsaWtlIHdoZW4geW91IHN0b3AgeW91cnNlbGYgZnJvbSBkb2luZyBzb21ldGhpbmcgeW91IHNob3VsZG4ndCBkbyIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJtYWtlIHBsYW5zIiwKICAgICAgICAgICBnb2FsID0gImhhdmUgZ29hbHMsIGxpa2Ugd2hlbiB5b3UncmUgd29ya2luZyBoYXJkIHRvIGRvIHNvbWV0aGluZyBvciBtYWtlIHNvbWV0aGluZyBoYXBwZW4iLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJiZSBhd2FyZSBvZiB0aGluZ3MiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAiYmUgYXdhcmUgb2YgaXRzZWxmIiwKICAgICAgICAgICBkZXNpcmVzID0gImhhdmUgZGVzaXJlcywgbGlrZSB3aGVuIHlvdSByZWFsbHkgd2FudCBzb21ldGhpbmciLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImZlZWwgZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJ1bmRlcnN0YW5kIGhvdyBzb21lYm9keSBlbHNlIGlzIGZlZWxpbmciLAogICAgICAgICAgIGpveSA9ICJmZWVsIGpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAia25vdyB3aGF0J3MgbmljZSBhbmQgd2hhdCdzIG1lYW4iLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gImhhdmUgYSBwZXJzb25hbGl0eSwgbGlrZSB3aGVuIHNvbWVvbmUgaXMgc2h5IGFuZCBzb21lYm9keSBlbHNlIGlzIHNpbGx5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJmZWVsIHBsZWFzdXJlLCBsaWtlIHdoZW4gc29tZXRoaW5nIGZlZWxzIHJlYWxseSBnb29kIiwKICAgICAgICAgICBwcm91ZCA9ICJmZWVsIHByb3VkIikpKSAlPiUKICAgIG11dGF0ZShzaG9ydCA9IGZhY3RvcigKICAgICAgcmVjb2RlKGl0ZW0sCiAgICAgICAgICAgICBoYXBweSA9ICJoYXBweSIsCiAgICAgICAgICAgICBkZXByZXNzZWQgPSAic2FkIiwKICAgICAgICAgICBmZWFyID0gInNjYXJlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiYW5ncnkiLAogICAgICAgICAgIGNhbG0gPSAiY2FsbSIsCiAgICAgICAgICAgc291bmRzID0gImhlYXIiLAogICAgICAgICAgIHNlZWluZyA9ICJzZWUiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwiLAogICAgICAgICAgIGRlcHRoID0gImRlcHRoIiwKICAgICAgICAgICBjb21wdXRhdGlvbnMgPSAibWF0aCIsCiAgICAgICAgICAgdGhvdWdodHMgPSAidGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IiwKICAgICAgICAgICByZW1lbWJlcmluZyA9ICJyZW1lbWJlciIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJiZWxpZWZzIiwKICAgICAgICAgICBodW5ncnkgPSAiaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJ0aXJlZCIsCiAgICAgICAgICAgcGFpbiA9ICJwYWluIiwKICAgICAgICAgICBuYXVzZWF0ZWQgPSAic2ljayIsCiAgICAgICAgICAgc2FmZSA9ICJzYWZlIiwKICAgICAgICAgICBsb3ZlID0gImxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSIsCiAgICAgICAgICAgY29tbXVuaWNhdGluZyA9ICJjb21tdW5pY2F0ZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZ3VpbHR5IiwKICAgICAgICAgICBkaXNyZXNwZWN0ZWQgPSAiaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJjaG9pY2VzIiwKICAgICAgICAgICBzZWxmX3Jlc3RyYWludCA9ICJzZWxmLWNvbnRyb2wiLAogICAgICAgICAgIGludGVudGlvbnMgPSAicGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiZ29hbHMiLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJhd2FyZSIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJzZWxmLWF3YXJlIiwKICAgICAgICAgICBkZXNpcmVzID0gImRlc2lyZXMiLAogICAgICAgICAgIGVtYmFycmFzc2VkID0gImVtYmFycmFzc2VkIiwKICAgICAgICAgICBlbW9fcmVjb2cgPSAiZW1wYXRoeSIsCiAgICAgICAgICAgam95ID0gImpveSIsCiAgICAgICAgICAgbW9yYWxpdHkgPSAibW9yYWxpdHkiLAogICAgICAgICAgIHBlcnNvbmFsaXR5ID0gInBlcnNvbmFsaXR5IiwKICAgICAgICAgICBwbGVhc3VyZSA9ICJwbGVhc3VyZSIsCiAgICAgICAgICAgcHJvdWQgPSAicHJvdWQiKSkpCgojIG1ha2UgZGF0YWZyYW1lIGZvciBwbG90dGluZwpzY2F0dGVyX3Bsb3R0aW5nIDwtIGxvYWRpbmdzKGVmYV9kM19hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHJlbmFtZShCT0RZID0gTVIxLAogICAgICAgICBIRUFSVCA9IE1SMiwKICAgICAgICAgTUlORCA9IE1SMykgJT4lCiAgZnVsbF9qb2luKHdvcmRpbmdfczMpICU+JQogIG11dGF0ZShkb21pbmFudCA9IGZhY3RvcigKICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksICJCT0RZIiwKICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpLAogICAgc2l6ZSA9IGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksIGFicyhCT0RZKSwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksIGFicyhIRUFSVCksCiAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCBhYnMoTUlORCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICBjb2xvciA9IGlmZWxzZShkb21pbmFudCA9PSAiQk9EWSIsICIjRTQxQTFDIiwKICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiSEVBUlQiLCAiIzREQUY0QSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJNSU5EIiwgIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkKCiMgcGxvdCEKZmlnczMgPC0gcGxvdF9seShzY2F0dGVyX3Bsb3R0aW5nLCB4ID0gSEVBUlQsIHkgPSBCT0RZLCB6ID0gTUlORCwKICAgICAgICAgICAgIHR5cGUgPSAic2NhdHRlcjNkIiwKICAgICAgICAgICAgIGNvbG9yID0gZG9taW5hbnQsIGNvbG9ycyA9IGMoIiMzNzdFQjgiLCAiIzREQUY0QSIsICIjRTQxQTFDIiksCiAgICAgICAgICAgICBtYXJrZXIgPSBsaXN0KHNpemUgPSA0KSwKICAgICAgICAgICAgIHRleHQgPSBzaG9ydCwKICAgICAgICAgICAgIHRleHRmb250ID0gbGlzdChzaXplID0gMTUpLAogICAgICAgICAgICAgbW9kZSA9ICJ0ZXh0K21hcmtlcnMiLAogICAgICAgICAgICAgc2hvd2xlZ2VuZCA9IFRSVUUpCgpmaWdzMwpgYGAKCiMjIyBTdHVkeSA0ICg0LTZ5bykKCmBgYHtyIGZpZ3VyZSAzZCBzY2F0dGVyIHM0fQojIHNldCB1cCBsYWJlbHMgZm9yIHBsb3QgKHNob3J0ZW5lZCB2ZXJzaW9uIG9mIG1lbnRhbCBjYXBhY2l0eSBpdGVtcykKd29yZGluZ19zNCA8LSBsb2FkaW5ncyhlZmFfZDRfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBzZWxlY3QoaXRlbSkgJT4lCiAgbXV0YXRlKHdvcmRpbmcgPSBmYWN0b3IoCiAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICBoYXBweSA9ICJmZWVsIGhhcHB5IiwKICAgICAgICAgICBkZXByZXNzZWQgPSAiZmVlbCBzYWQiLAogICAgICAgICAgIGZlYXIgPSAiZmVlbCBzY2FyZWQiLAogICAgICAgICAgIGFuZ3J5ID0gImdldCBhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJmZWVsIGNhbG0iLAogICAgICAgICAgIHNvdW5kcyA9ICJoZWFyIHNvdW5kcyIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSB0aGluZ3MiLAogICAgICAgICAgIHRlbXBlcmF0dXJlID0gInNlbnNlIHRlbXBlcmF0dXJlcyIsCiAgICAgICAgICAgb2RvcnMgPSAic21lbGwgdGhpbmdzIiwKICAgICAgICAgICBkZXB0aCA9ICJzZW5zZSB3aGV0aGVyIHNvbWV0aGluZyBpcyBjbG9zZSBieSBvciBmYXIgYXdheSIsCiAgICAgICAgICAgY29tcHV0YXRpb25zID0gImRvIG1hdGgiLAogICAgICAgICAgIHRob3VnaHRzID0gImhhdmUgdGhvdWdodHMiLAogICAgICAgICAgIHJlYXNvbmluZyA9ICJmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGluZ3MiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIHRoaW5ncyIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJoYXZlIGJlbGllZnMsIGxpa2Ugd2hlbiB5b3UgdGhpbmsgc29tZXRoaW5nIGlzIHRydWUiLAogICAgICAgICAgIGh1bmdyeSA9ICJnZXQgaHVuZ3J5IiwKICAgICAgICAgICB0aXJlZCA9ICJmZWVsIHRpcmVkIiwKICAgICAgICAgICBwYWluID0gImZlZWwgcGFpbiIsCiAgICAgICAgICAgbmF1c2VhdGVkID0gImZlZWwgc2ljaywgbGlrZSB3aGVuIHlvdSBmZWVsIGxpa2UgeW91IG1pZ2h0IHRocm93IHVwIiwKICAgICAgICAgICBzYWZlID0gImZlZWwgc2FmZSIsCiAgICAgICAgICAgbG92ZSA9ICJmZWVsIGxvdmUiLAogICAgICAgICAgIHJlY29nbml6aW5nID0gInJlY29nbml6ZSBzb21lYm9keSBlbHNlIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIHdpdGggc29tZWJvZHkgZWxzZSIsCiAgICAgICAgICAgZ3VpbHQgPSAiZmVlbCBndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJnZXQgaHVydCBmZWVsaW5ncyIsCiAgICAgICAgICAgZnJlZV93aWxsID0gImRlY2lkZSB3aGF0IHRvIGRvIiwKICAgICAgICAgICBjaG9pY2VzID0gIm1ha2UgY2hvaWNlcyIsCiAgICAgICAgICAgc2VsZl9yZXN0cmFpbnQgPSAiaGF2ZSBzZWxmLWNvbnRyb2wsIGxpa2Ugd2hlbiB5b3Ugc3RvcCB5b3Vyc2VsZiBmcm9tIGRvaW5nIHNvbWV0aGluZyB5b3Ugc2hvdWxkbid0IGRvIiwKICAgICAgICAgICBpbnRlbnRpb25zID0gIm1ha2UgcGxhbnMiLAogICAgICAgICAgIGdvYWwgPSAiaGF2ZSBnb2FscywgbGlrZSB3aGVuIHlvdSdyZSB3b3JraW5nIGhhcmQgdG8gZG8gc29tZXRoaW5nIG9yIG1ha2Ugc29tZXRoaW5nIGhhcHBlbiIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImJlIGF3YXJlIG9mIHRoaW5ncyIsCiAgICAgICAgICAgc2VsZl9hd2FyZSA9ICJiZSBhd2FyZSBvZiBpdHNlbGYiLAogICAgICAgICAgIGRlc2lyZXMgPSAiaGF2ZSBkZXNpcmVzLCBsaWtlIHdoZW4geW91IHJlYWxseSB3YW50IHNvbWV0aGluZyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZmVlbCBlbWJhcnJhc3NlZCIsCiAgICAgICAgICAgZW1vX3JlY29nID0gInVuZGVyc3RhbmQgaG93IHNvbWVib2R5IGVsc2UgaXMgZmVlbGluZyIsCiAgICAgICAgICAgam95ID0gImZlZWwgam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJrbm93IHdoYXQncyBuaWNlIGFuZCB3aGF0J3MgbWVhbiIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAiaGF2ZSBhIHBlcnNvbmFsaXR5LCBsaWtlIHdoZW4gc29tZW9uZSBpcyBzaHkgYW5kIHNvbWVib2R5IGVsc2UgaXMgc2lsbHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gImZlZWwgcGxlYXN1cmUsIGxpa2Ugd2hlbiBzb21ldGhpbmcgZmVlbHMgcmVhbGx5IGdvb2QiLAogICAgICAgICAgIHByb3VkID0gImZlZWwgcHJvdWQiKSkpICU+JQogICAgbXV0YXRlKHNob3J0ID0gZmFjdG9yKAogICAgICByZWNvZGUoaXRlbSwKICAgICAgICAgICAgIGhhcHB5ID0gImhhcHB5IiwKICAgICAgICAgICAgIGRlcHJlc3NlZCA9ICJzYWQiLAogICAgICAgICAgIGZlYXIgPSAic2NhcmVkIiwKICAgICAgICAgICBhbmdyeSA9ICJhbmdyeSIsCiAgICAgICAgICAgY2FsbSA9ICJjYWxtIiwKICAgICAgICAgICBzb3VuZHMgPSAiaGVhciIsCiAgICAgICAgICAgc2VlaW5nID0gInNlZSIsCiAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAidGVtcGVyYXR1cmVzIiwKICAgICAgICAgICBvZG9ycyA9ICJzbWVsbCIsCiAgICAgICAgICAgZGVwdGggPSAiZGVwdGgiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJtYXRoIiwKICAgICAgICAgICB0aG91Z2h0cyA9ICJ0aG91Z2h0cyIsCiAgICAgICAgICAgcmVhc29uaW5nID0gImZpZ3VyZSBvdXQiLAogICAgICAgICAgIHJlbWVtYmVyaW5nID0gInJlbWVtYmVyIiwKICAgICAgICAgICBiZWxpZWZzID0gImJlbGllZnMiLAogICAgICAgICAgIGh1bmdyeSA9ICJodW5ncnkiLAogICAgICAgICAgIHRpcmVkID0gInRpcmVkIiwKICAgICAgICAgICBwYWluID0gInBhaW4iLAogICAgICAgICAgIG5hdXNlYXRlZCA9ICJzaWNrIiwKICAgICAgICAgICBzYWZlID0gInNhZmUiLAogICAgICAgICAgIGxvdmUgPSAibG92ZSIsCiAgICAgICAgICAgcmVjb2duaXppbmcgPSAicmVjb2duaXplIiwKICAgICAgICAgICBjb21tdW5pY2F0aW5nID0gImNvbW11bmljYXRlIiwKICAgICAgICAgICBndWlsdCA9ICJndWlsdHkiLAogICAgICAgICAgIGRpc3Jlc3BlY3RlZCA9ICJodXJ0IGZlZWxpbmdzIiwKICAgICAgICAgICBmcmVlX3dpbGwgPSAiZGVjaWRlIiwKICAgICAgICAgICBjaG9pY2VzID0gImNob2ljZXMiLAogICAgICAgICAgIHNlbGZfcmVzdHJhaW50ID0gInNlbGYtY29udHJvbCIsCiAgICAgICAgICAgaW50ZW50aW9ucyA9ICJwbGFucyIsCiAgICAgICAgICAgZ29hbCA9ICJnb2FscyIsCiAgICAgICAgICAgY29uc2Npb3VzID0gImF3YXJlIiwKICAgICAgICAgICBzZWxmX2F3YXJlID0gInNlbGYtYXdhcmUiLAogICAgICAgICAgIGRlc2lyZXMgPSAiZGVzaXJlcyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZW1iYXJyYXNzZWQiLAogICAgICAgICAgIGVtb19yZWNvZyA9ICJlbXBhdGh5IiwKICAgICAgICAgICBqb3kgPSAiam95IiwKICAgICAgICAgICBtb3JhbGl0eSA9ICJtb3JhbGl0eSIsCiAgICAgICAgICAgcGVyc29uYWxpdHkgPSAicGVyc29uYWxpdHkiLAogICAgICAgICAgIHBsZWFzdXJlID0gInBsZWFzdXJlIiwKICAgICAgICAgICBwcm91ZCA9ICJwcm91ZCIpKSkKCiMgbWFrZSBkYXRhZnJhbWUgZm9yIHBsb3R0aW5nCnNjYXR0ZXJfcGxvdHRpbmcgPC0gbG9hZGluZ3MoZWZhX2Q0X2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgcmVuYW1lKEJPRFkgPSBNUjEsCiAgICAgICAgIEhFQVJUID0gTVIyLAogICAgICAgICBNSU5EID0gTVIzKSAlPiUKICBmdWxsX2pvaW4od29yZGluZ19zNCkgJT4lCiAgbXV0YXRlKGRvbWluYW50ID0gZmFjdG9yKAogICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgIkJPRFkiLAogICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoSEVBUlQpLCAiSEVBUlQiLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCAiTUlORCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSksCiAgICBzaXplID0gaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhCT0RZKSwgYWJzKEJPRFkpLAogICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgYWJzKEhFQVJUKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoTUlORCksIGFicyhNSU5EKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgIGNvbG9yID0gaWZlbHNlKGRvbWluYW50ID09ICJCT0RZIiwgIiNFNDFBMUMiLAogICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJIRUFSVCIsICIjNERBRjRBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZG9taW5hbnQgPT0gIk1JTkQiLCAiI0U0MUExQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKQoKIyBwbG90IQpmaWdzNCA8LSBwbG90X2x5KHNjYXR0ZXJfcGxvdHRpbmcsIHggPSBIRUFSVCwgeSA9IEJPRFksIHogPSBNSU5ELAogICAgICAgICAgICAgdHlwZSA9ICJzY2F0dGVyM2QiLAogICAgICAgICAgICAgY29sb3IgPSBkb21pbmFudCwgY29sb3JzID0gYygiIzM3N0VCOCIsICIjNERBRjRBIiwgIiNFNDFBMUMiKSwKICAgICAgICAgICAgIG1hcmtlciA9IGxpc3Qoc2l6ZSA9IDQpLAogICAgICAgICAgICAgdGV4dCA9IHNob3J0LAogICAgICAgICAgICAgdGV4dGZvbnQgPSBsaXN0KHNpemUgPSAxNSksCiAgICAgICAgICAgICBtb2RlID0gInRleHQrbWFya2VycyIsCiAgICAgICAgICAgICBzaG93bGVnZW5kID0gVFJVRSkKCmZpZ3M0CmBgYAoKIyMgSGVhdG1hcHMKCipOT1RFOiBzZXQgdG8gMyBmYWN0b3JzIG1hbnVhbGx5LCBmb3Igbm93LioKCiMjIyBTdHVkeSAxIChhZHVsdHMpCgpgYGB7ciBmaWd1cmUgaGVhdG1hcCBzMSwgZmlnLndpZHRoID0gMTQsIGZpZy5oZWlnaHQgPSAxNH0KZmFjdG9yc19zMSA8LSBmYS5zb3J0KGZhKGQxX2FsbCwgbmZhY3RvcnMgPSAzLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlKSRsb2FkaW5nc1tdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJpdGVtIikgJT4lCiAgZnVsbF9qb2luKHdvcmRpbmdfczEpICU+JQogIHNlbGVjdCh3b3JkaW5nLCBNUjEsIE1SMiwgTVIzKSAlPiUKICByZW5hbWUoY2FwYWNpdHkgPSB3b3JkaW5nLCBGYWN0b3IxID0gTVIxLCBGYWN0b3IyID0gTVIyLCBGYWN0b3IzID0gTVIzKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm9yZGVyIikgJT4lCiAgbXV0YXRlKG9yZGVyID0gYXMubnVtZXJpYyhvcmRlcikpCgpmYWN0b3JzX3MxX2xvbmcgPC0gZmFjdG9yc19zMSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHksIC1vcmRlcikgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvcikpKSAlPiUKICAjIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpLAogICMgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJGMSIsICJGMyIsICJGMiIpKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJGMiIsICJGMSIsICJGMyIpKSkgJT4lCiAgYXJyYW5nZShvcmRlciwgZmFjdG9yKQoKZmFjdG9yc19zMV9ibGFuazEgPC0gZmFjdG9yc19zMV9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczFfbG9uZyRsb2FkaW5nKSkpCiMgZmFjdG9yc19zMV9ibGFuazIgPC0gZmFjdG9yc19zMV9sb25nICU+JQojICAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yID09ICJGMSIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MxX2xvbmckbG9hZGluZykqMi8zKSkpCmZhY3RvcnNfczFfYmxhbmsyIDwtIGZhY3RvcnNfczFfbG9uZyAlPiUKICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYyIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczFfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zMV9ibGFuazMgPC0gZmFjdG9yc19zMV9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciAhPSAiRjMiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMV9sb25nJGxvYWRpbmcpKjEvMykpKQoKIyBnZ3Bsb3QoZmFjdG9yc19zMV9ibGFuazEsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3MxX2JsYW5rMiwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKIyAKIyBnZ3Bsb3QoZmFjdG9yc19zMV9ibGFuazMsIGFlcyh4ID0gZmFjdG9yLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCgpnZ3Bsb3QoZmFjdG9yc19zMV9sb25nLCBhZXMoeCA9IGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDAuNTEsIHhtYXggPSAxLjQ5LCB5bWluID0gMTQuNTUsIHltYXggPSAyMC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMS41MSwgeG1heCA9IDIuNDksIHltaW4gPSA2LjU1LCB5bWF4ID0gMTQuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIGdlb21fcmVjdChhZXMoeG1pbiA9IDIuNTEsIHhtYXggPSAzLjQ5LCB5bWluID0gMC41NSwgeW1heCA9IDYuNDUpLAogICMgICAgICAgICAgIGFscGhhID0gMCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gLjUpICsKICAjIHRoZW1lX2J3KCkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMApgYGAKCiMjIyBTdHVkeSAyICg3LTl5KQoKYGBge3IgZmlndXJlIGhlYXRtYXAgczIsIGZpZy53aWR0aCA9IDE0LCBmaWcuaGVpZ2h0ID0gMTR9CmZhY3RvcnNfczIgPC0gZmEuc29ydChmYShkMl9hbGwsIG5mYWN0b3JzID0gMywgY29yID0gY2hvc2VuQ29yVHlwZSwgcm90YXRlID0gY2hvc2VuUm90VHlwZSkkbG9hZGluZ3NbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIGZ1bGxfam9pbih3b3JkaW5nX3MyKSAlPiUKICBzZWxlY3Qod29yZGluZywgTVIxLCBNUjIsIE1SMykgJT4lCiAgcmVuYW1lKGNhcGFjaXR5ID0gd29yZGluZywgRmFjdG9yMSA9IE1SMSwgRmFjdG9yMiA9IE1SMiwgRmFjdG9yMyA9IE1SMykgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJvcmRlciIpICU+JQogIG11dGF0ZShvcmRlciA9IGFzLm51bWVyaWMob3JkZXIpKQoKZmFjdG9yc19zMl9sb25nIDwtIGZhY3RvcnNfczIgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5LCAtb3JkZXIpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZ3N1YigiRmFjdG9yIiwgIkYiLCBmYWN0b3IpKSkgJT4lCiAgIyBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAjICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiRjEiLCAiRjMiLCAiRjIiKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYyIiwgIkYxIiwgIkYzIikpKSAlPiUKICBhcnJhbmdlKG9yZGVyLCBmYWN0b3IpCgpmYWN0b3JzX3MyX2JsYW5rMSA8LSBmYWN0b3JzX3MyX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMl9sb25nJGxvYWRpbmcpKSkKZmFjdG9yc19zMl9ibGFuazIgPC0gZmFjdG9yc19zMl9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjEiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMl9sb25nJGxvYWRpbmcpKjIvMykpKQojIGZhY3RvcnNfczJfYmxhbmsyIDwtIGZhY3RvcnNfczJfbG9uZyAlPiUKIyAgIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjIiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zMl9sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3MyX2JsYW5rMyA8LSBmYWN0b3JzX3MyX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yICE9ICJGMyIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MyX2xvbmckbG9hZGluZykqMS8zKSkpCgojIGdncGxvdChmYWN0b3JzX3MyX2JsYW5rMSwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczJfYmxhbmsyLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3MyX2JsYW5rMywgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKCmdncGxvdChmYWN0b3JzX3MyX2xvbmcsIGFlcyh4ID0gZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwogIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMC41MSwgeG1heCA9IDEuNDksIHltaW4gPSAxNC41NSwgeW1heCA9IDIwLjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAxLjUxLCB4bWF4ID0gMi40OSwgeW1pbiA9IDYuNTUsIHltYXggPSAxNC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMi41MSwgeG1heCA9IDMuNDksIHltaW4gPSAwLjU1LCB5bWF4ID0gNi40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgdGhlbWVfYncoKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCmBgYAoKIyMjIFN0dWR5IDMgKDctOXkpCgpgYGB7ciBmaWd1cmUgaGVhdG1hcCBzMywgZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSA4fQpmYWN0b3JzX3MzIDwtIGZhLnNvcnQoZmEoZDNfYWxsLCBuZmFjdG9ycyA9IDMsIGNvciA9IGNob3NlbkNvclR5cGUsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUpJGxvYWRpbmdzW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBsZWZ0X2pvaW4od29yZGluZ19zMykgJT4lCiAgc2VsZWN0KHdvcmRpbmcsIE1SMSwgTVIyLCBNUjMpICU+JQogIHJlbmFtZShjYXBhY2l0eSA9IHdvcmRpbmcsIEZhY3RvcjEgPSBNUjEsIEZhY3RvcjIgPSBNUjIsIEZhY3RvcjMgPSBNUjMpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkKCmZhY3RvcnNfczNfbG9uZyA8LSBmYWN0b3JzX3MzICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYxIiwgIkYzIiwgIkYyIikpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYyIiwgIkYxIiwgIkYzIikpKSAlPiUKICBhcnJhbmdlKG9yZGVyLCBmYWN0b3IpCgpmYWN0b3JzX3MzX2JsYW5rMSA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zM19sb25nJGxvYWRpbmcpKSkKIyBmYWN0b3JzX3MzX2JsYW5rMiA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiMgICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYxIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczNfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zM19ibGFuazIgPC0gZmFjdG9yc19zM19sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjIiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zM19sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3MzX2JsYW5rMyA8LSBmYWN0b3JzX3MzX2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yICE9ICJGMyIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3MzX2xvbmckbG9hZGluZykqMS8zKSkpCgojIGdncGxvdChmYWN0b3JzX3MzX2JsYW5rMSwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczNfYmxhbmsyLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3MzX2JsYW5rMywgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKCmdncGxvdChmYWN0b3JzX3MzX2xvbmcsIGFlcyh4ID0gZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwogIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMC41MSwgeG1heCA9IDEuNDksIHltaW4gPSAxNC41NSwgeW1heCA9IDIwLjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAxLjUxLCB4bWF4ID0gMi40OSwgeW1pbiA9IDYuNTUsIHltYXggPSAxNC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMi41MSwgeG1heCA9IDMuNDksIHltaW4gPSAwLjU1LCB5bWF4ID0gNi40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgdGhlbWVfYncoKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCmBgYAoKIyMjIFN0dWR5IDQgKDQtNnkpCgpgYGB7ciBmaWd1cmUgaGVhdG1hcCBzNCwgZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSA4fQpmYWN0b3JzX3M0IDwtIGZhLnNvcnQoZmEoZDRfYWxsLCBuZmFjdG9ycyA9IDMsIGNvciA9IGNob3NlbkNvclR5cGUsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUpJGxvYWRpbmdzW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIml0ZW0iKSAlPiUKICBsZWZ0X2pvaW4od29yZGluZ19zNCkgJT4lCiAgc2VsZWN0KHdvcmRpbmcsIE1SMSwgTVIyLCBNUjMpICU+JQogIHJlbmFtZShjYXBhY2l0eSA9IHdvcmRpbmcsIEZhY3RvcjEgPSBNUjEsIEZhY3RvcjIgPSBNUjIsIEZhY3RvcjMgPSBNUjMpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkKCmZhY3RvcnNfczRfbG9uZyA8LSBmYWN0b3JzX3M0ICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSkpICU+JQogICMgbXV0YXRlKGZhY3RvciA9IGZhY3Rvcihnc3ViKCJGYWN0b3IiLCAiRiIsIGZhY3RvciksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYxIiwgIkYzIiwgIkYyIikpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGdzdWIoIkZhY3RvciIsICJGIiwgZmFjdG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkYyIiwgIkYxIiwgIkYzIikpKSAlPiUKICBhcnJhbmdlKG9yZGVyLCBmYWN0b3IpCgpmYWN0b3JzX3M0X2JsYW5rMSA8LSBmYWN0b3JzX3M0X2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zNF9sb25nJGxvYWRpbmcpKSkKIyBmYWN0b3JzX3M0X2JsYW5rMiA8LSBmYWN0b3JzX3M0X2xvbmcgJT4lCiMgICBtdXRhdGUobG9hZGluZyA9IGlmZWxzZShmYWN0b3IgPT0gIkYxIiwgbG9hZGluZywgcmVwKDEwMCwgbGVuZ3RoKGZhY3RvcnNfczRfbG9uZyRsb2FkaW5nKSoyLzMpKSkKZmFjdG9yc19zNF9ibGFuazIgPC0gZmFjdG9yc19zNF9sb25nICU+JQogIG11dGF0ZShsb2FkaW5nID0gaWZlbHNlKGZhY3RvciA9PSAiRjIiLCBsb2FkaW5nLCByZXAoMTAwLCBsZW5ndGgoZmFjdG9yc19zNF9sb25nJGxvYWRpbmcpKjIvMykpKQpmYWN0b3JzX3M0X2JsYW5rMyA8LSBmYWN0b3JzX3M0X2xvbmcgJT4lCiAgbXV0YXRlKGxvYWRpbmcgPSBpZmVsc2UoZmFjdG9yICE9ICJGMyIsIGxvYWRpbmcsIHJlcCgxMDAsIGxlbmd0aChmYWN0b3JzX3M0X2xvbmckbG9hZGluZykqMS8zKSkpCgojIGdncGxvdChmYWN0b3JzX3M0X2JsYW5rMSwgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSByZW9yZGVyKGNhcGFjaXR5LCBkZXNjKG9yZGVyKSksIGZpbGwgPSBsb2FkaW5nKSkgKwojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgIyBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKGxvYWRpbmcsIDIpLCBuc21hbGwgPSAyKSkpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHBhbGV0dGUgPSAiUmRZbEJ1IiwgbGltaXRzID0gYygtMSwgMSksIGJyZWFrcyA9IGMoLTEsIDAsIDEpLAojICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyaGVpZ2h0ID0gMjApKSArCiMgICBzY2FsZV94X2Rpc2NyZXRlKHBvc2l0aW9uID0gInRvcCIpICsKIyAgIHRoZW1lX21pbmltYWwoKSArCiMgICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiMgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAojICAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKIyAgICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCiMgCiMgZ2dwbG90KGZhY3RvcnNfczRfYmxhbmsyLCBhZXMoeCA9IGZhY3RvciwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcmVvcmRlcihjYXBhY2l0eSwgZGVzYyhvcmRlcikpLCBmaWxsID0gbG9hZGluZykpICsKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcihwYWxldHRlID0gIlJkWWxCdSIsIGxpbWl0cyA9IGMoLTEsIDEpLCBicmVha3MgPSBjKC0xLCAwLCAxKSwKIyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIodGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwojICAgc2NhbGVfeF9kaXNjcmV0ZShwb3NpdGlvbiA9ICJ0b3AiKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjQpLAojICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKIyAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X2JsYW5rKCksCiMgICAgICAgICBwYW5lbC5ncmlkID0gZWxlbWVudF9ibGFuaygpKSAjIDEwMDAgYnkgMTAwMAojIAojIGdncGxvdChmYWN0b3JzX3M0X2JsYW5rMywgYWVzKHggPSBmYWN0b3IsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiMgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiMgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQobG9hZGluZywgMiksIG5zbWFsbCA9IDIpKSkgKwojICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiMgICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKHRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJoZWlnaHQgPSAyMCkpICsKIyAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI0KSwKIyAgICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiMgICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAojICAgICAgICAgcGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSkgIyAxMDAwIGJ5IDEwMDAKCmdncGxvdChmYWN0b3JzX3M0X2xvbmcsIGFlcyh4ID0gZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHJlb3JkZXIoY2FwYWNpdHksIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwgYnJlYWtzID0gYygtMSwgMCwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcih0aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcmhlaWdodCA9IDIwKSkgKwogIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMC41MSwgeG1heCA9IDEuNDksIHltaW4gPSAxNC41NSwgeW1heCA9IDIwLjQ1KSwKICAjICAgICAgICAgICBhbHBoYSA9IDAsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IC41KSArCiAgIyBnZW9tX3JlY3QoYWVzKHhtaW4gPSAxLjUxLCB4bWF4ID0gMi40OSwgeW1pbiA9IDYuNTUsIHltYXggPSAxNC40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgZ2VvbV9yZWN0KGFlcyh4bWluID0gMi41MSwgeG1heCA9IDMuNDksIHltaW4gPSAwLjU1LCB5bWF4ID0gNi40NSksCiAgIyAgICAgICAgICAgYWxwaGEgPSAwLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAuNSkgKwogICMgdGhlbWVfYncoKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyNCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCkpICMgMTAwMCBieSAxMDAwCmBgYAoKIyMgTWVhbiByYXRpbmdzCgojIyMgU3R1ZGllcyAxLTIKCk1lYW4gcmF0aW5ncyBvZiA0MCBtZW50YWwgY2FwYWNpdGllcyBmb3IgdGhlIDIgZW50aXRpZXMgaW5jbHVkZWQgaW4gU3R1ZGllcyAxLTIuIFBhcnRpY2lwYW50cyByZXNwb25kZWQgb24gYSAzLXBvaW50IHNjYWxlICgwID0gIm5vIiwgMC41ID0gImtpbmRhIiwgMSA9ICJ5ZXMiKS4gRXJyb3IgYmFycyBhcmUgbm9ucGFyYW1ldHJpYyBib290c3RyYXBwZWQgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLiBNZW50YWwgY2FwYWNpdGllcyBhcmUgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlaXIgZG9taW5hbnQgZmFjdG9yIGxvYWRpbmcgaW4gU3R1ZHkgMSAoYWR1bHRzKS4KCmBgYHtyIGZpZ3VyZSBtZWFuIHJhdGluZ3MgczEtczIsIGZpZy53aWR0aCA9IDYsIGZpZy5oZWlnaHQgPSA2fQojIG1ha2UgZGF0YWZyYW1lCnMxMl9wbG90dGluZyA8LSBjaGFyX3Bsb3R0aW5nICU+JQogIGZpbHRlcihzdHVkeSAlaW4lIGMoInN0dWR5IDEiLCAic3R1ZHkgMiIpKSAlPiUKICBkaXN0aW5jdCgpCgojIHBsb3QhIChvcmRlcmVkIGJ5IHN0dWR5IDMgZmFjdG9yIGxvYWRpbmdzKQpzMTIgPC0gZ2dwbG90KHMxMl9wbG90dGluZywKICAgICAgICAgICAgICAgYWVzKHkgPSBtZWFuX25hLCB4ID0gcmVvcmRlcih3b3JkaW5nLCBkZXNjKHMxX29yZGVyKSksIGNvbG91ciA9IGZhY3RvcihzMV9jb2xvciksCiAgICAgICAgICAgICAgICAgICBzaGFwZSA9IHN0dWR5KSkgKwogIGdlb21fcG9pbnQoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpLCBzaXplID0gMikgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBjaV9sb3dlcl9uYSwgeW1heCA9IGNpX3VwcGVyX25hKSwgd2lkdGggPSAwLjQsCiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC42KSkgKwogIGZhY2V0X3dyYXAofiBjaGFyYWN0ZXIpICsKICB0aGVtZV9idygpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJcbk1lYW4gcmF0aW5nIiwKICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gYygwLCAwLjUsIDEpLAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCIwXG4obm8pIiwgIjAuNVxuKGtpbmRhKSIsICIxXG4oeWVzKSIpKSArCiAgc2NhbGVfc2hhcGVfZGlzY3JldGUobmFtZSA9ICJTdHVkeToiLAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlN0dWR5IDE6IGFkdWx0cyIsICJTdHVkeSAyOiA3LTl5IikpICsKICAjIHNjYWxlX2NvbG91cl9icmV3ZXIobmFtZSA9ICJGYWN0b3I6IiwKICAjICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJxdWFsIiwgcGFsZXR0ZSA9IDYsCiAgIyAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gRkFMU0UpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKG5hbWUgPSAiRmFjdG9yOiIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCIjMzc3RUI4IiwgIiM0REFGNEEiLCAiI0U0MUExQyIpLAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiSEVBUlQiLCAiTUlORCIsICJCT0RZIikpICsKICBjb29yZF9mbGlwKCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDkpLAogICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiaXRhbGljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gcGFsZXR0ZV9zMSksCiAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJyaWdodCIpCgpzMTIKYGBgCgojIyMgU3R1ZGllcyAzLTQKCk1lYW4gcmF0aW5ncyBvZiAyMCBtZW50YWwgY2FwYWNpdGllcyBmb3IgdGhlIDkgZW50aXRpZXMgaW5jbHVkZWQgaW4gU3R1ZGllcyAzLTQuIFBhcnRpY2lwYW50cyByZXNwb25kZWQgb24gYSAzLXBvaW50IHNjYWxlICgwID0gIm5vIiwgMC41ID0gImtpbmRhIiwgMSA9ICJ5ZXMiKS4gRXJyb3IgYmFycyBhcmUgbm9ucGFyYW1ldHJpYyBib290c3RyYXBwZWQgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLiBNZW50YWwgY2FwYWNpdGllcyBhcmUgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlaXIgZG9taW5hbnQgZmFjdG9yIGxvYWRpbmcgaW4gU3R1ZHkgMyAoNy05eSkuCgpgYGB7ciBmaWd1cmUgbWVhbiByYXRpbmdzIHMzLXM0LCBmaWcud2lkdGggPSAxMCwgZmlnLmhlaWdodCA9IDZ9CiMgbWFrZSBkYXRhZnJhbWUKczM0X3Bsb3R0aW5nIDwtIGNoYXJfcGxvdHRpbmcgJT4lCiAgZmlsdGVyKHN0dWR5ICVpbiUgYygic3R1ZHkgMyIsICJzdHVkeSA0IiksCiAgICAgICAgICFpcy5uYShzM19vcmRlciksICFpcy5uYShjaGFyYWN0ZXIpLCAhaXMubmEoY2FwYWNpdHkpKSAlPiUKICBkaXN0aW5jdCgpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29tcHV0ZXIiLCAiZG9sbCIsICJ0ZWRkeV9iZWFyIiwgInJvYm90IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWV0bGUiLCAiYmlyZCIsICJtb3VzZSIsICJnb2F0IiwgImVsZXBoYW50IikpKQoKIyBwbG90ISAob3JkZXJlZCBieSBzdHVkeSAzIGZhY3RvciBsb2FkaW5ncykKczM0IDwtIGdncGxvdChzMzRfcGxvdHRpbmcsCiAgICAgICAgICAgICAgIGFlcyh5ID0gbWVhbl9uYSwgeCA9IHJlb3JkZXIod29yZGluZywgZGVzYyhzM19vcmRlcikpLCAKICAgICAgICAgICAgICAgICAgICMgY29sb3VyID0gc3R1ZHksCiAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBzM19jb2xvciwKICAgICAgICAgICAgICAgICAgIHNoYXBlID0gc3R1ZHkpKSArCiAgZ2VvbV9wb2ludChzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNiksIHNpemUgPSAyKSArCiAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGNpX2xvd2VyX25hLCB5bWF4ID0gY2lfdXBwZXJfbmEpLCB3aWR0aCA9IDAuNCwKICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpKSArCiAgZmFjZXRfd3JhcCh+IGNoYXJhY3RlciwgbmNvbCA9IDkpICsKICB0aGVtZV9idygpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJcbk1lYW4gcmF0aW5nIiwKICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gYygwLCAwLjUsIDEpLAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCIwXG4obm8pIiwgIjAuNVxuKGtpbmRhKSIsICIxXG4oeWVzKSIpKSArCiAgc2NhbGVfc2hhcGVfZGlzY3JldGUobmFtZSA9ICJTdHVkeToiLAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlN0dWR5IDM6IDctOXkiLCAiU3R1ZHkgNDogNC02eSIpKSArCiAgIyBzY2FsZV9jb2xvdXJfZGlzY3JldGUobmFtZSA9ICJTdHVkeToiLAogICMgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU3R1ZHkgMzogNy05eSIsICJTdHVkeSA0OiA0LTZ5IikpICsKICAjIHNjYWxlX2NvbG91cl9icmV3ZXIobmFtZSA9ICJGYWN0b3I6IiwKICAjICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJxdWFsIiwgcGFsZXR0ZSA9IDYsCiAgIyAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gRkFMU0UpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKG5hbWUgPSAiRmFjdG9yOiIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCIjMzc3RUI4IiwgIiM0REFGNEEiLCAiI0U0MUExQyIpLAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiSEVBUlQiLCAiTUlORCIsICJCT0RZIikpICsKICBjb29yZF9mbGlwKCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDkpLAogICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiaXRhbGljIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29sb3VyID0gcGFsZXR0ZV9zMSksCiAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKQoKczM0CmBgYAoKIyBNZWFuIGZhY3RvciBzY29yZXMKCiMjIFN0dWRpZXMgMS0yCgpgYGB7ciBzMTIgYWxsIG5vIHJvdGF0aW9uLCBpbmNsdWRlID0gRn0KIyBtYWtlIGNvbWJpbmVkIGRhdGFzZXQKZDEyX2FsbCA8LSBkMV9hbGwgJT4lIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSAlPiUKICBmdWxsX2pvaW4oZDJfYWxsICU+JSByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygic3ViaWQiKQoKIyBleGFtaW5lIHNjcmVlIHBsb3QKZmEucGFyYWxsZWwoZDEyX2FsbCkKCiMgcnVuIEVGQSB3aXRob3V0IHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMTJfYWxsX3Vucm90YXRlZCA8LSBmYShkMTJfYWxsLCAxMywgcm90YXRlID0gIm5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDEyX2FsbF91bnJvdGF0ZWQpCgojIGV4YW1pbmUgZWlnZW52YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZAplZmFfZDEyX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2QxMl9hbGxfdW5yb3RhdGVkKSRWYWNjb3VudGVkICU+JQogIHQoKSAlPiUKICBkYXRhLmZyYW1lKCkKCiMgY291bnQgZmFjdG9ycyB3aXRoIGVpZ2VudmFsdWVzID4gMSBhbmQgdmFyaWFuY2UgZXhwbGFpbmVkID4gNSUKZWZhX2QxMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzIDwtIGVmYV9kMTJfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kMTJfYWxsX3Vucm90YXRlZF9uZmFjdG9ycwpgYGAKCmBgYHtyIHMxMiBhbGwgcm90YXRpb24sIGluY2x1ZGUgPSBGfQplZmFfZDEyX2FsbF9yb3RhdGVkX21heCA8LSBmYShkMTJfYWxsLCAxMywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCmVmYV9kMTJfYWxsX3JvdGF0ZWQgPC0gZmEoZDEyX2FsbCwgZWZhX2QxMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2QxMl9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kMTJfYWxsX3JvdGF0ZWQpW10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUobG9hZGluZ19hYnMgPSBhYnMobG9hZGluZykpICU+JQogIGdyb3VwX2J5KGNhcGFjaXR5KSAlPiUKICB0b3BfbigxLCBsb2FkaW5nX2FicykgJT4lCiAgdW5ncm91cCgpCmVmYV9kMTJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDEyX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QxMl9hbGwgPC0gZWZhX2QxMl9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDEyX2FsbApgYGAKCmBgYHtyIHMxMiBhbGwgdmFyaW1heCByb3RhdGlvbiwgaW5jbHVkZSA9IEZ9CiMgcnVuIEVGQSB3aXRoIHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMTJfYWxsX3JvdGF0ZWROIDwtIGZhKGQxMl9hbGwsIG5mYWN0b3JzX2QxMl9hbGwsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmVzID0gInRlbkJlcmdlIiwgbWlzc2luZyA9IFRSVUUpICMgaW1wdXRlIG1pc3NpbmcgdmFsdWVzCnByaW50KGVmYV9kMTJfYWxsX3JvdGF0ZWROKQoKIyBnZXQgbG9hZGluZ3MgZm9yIGVhY2ggZmFjdG9yCmVmYV9kMTJfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kMTJfYWxsX3JvdGF0ZWROKVtdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJjYXBhY2l0eSIpCmBgYAoKYGBge3IgczEyIGxvYWRpbmdzIHRhYmxlLCBpbmNsdWRlID0gRn0KZGF0YS5mcmFtZShsb2FkaW5ncyhmYS5zb3J0KGVmYV9kMTJfYWxsX3JvdGF0ZWROKSlbXSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJNIikpLCBmdW5zKHJvdW5kMikpCmBgYAoKYGBge3IgczEyIGZpZ3VyZSBzZXR1cCwgaW5jbHVkZSA9IEZ9CnNjb3Jlc19zMTJfcGxvdHRpbmcgPC0gZDEgJT4lIAogIHNlbGVjdChzdWJpZCwgYWdlX2dyb3VwLCBjaGFyYWN0ZXIpICU+JSAKICBkaXN0aW5jdCgpICU+JSAKICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSAlPiUKICBmdWxsX2pvaW4oZDIgJT4lIAogICAgICAgICAgICAgIHNlbGVjdChzdWJpZCwgYWdlX2dyb3VwLCBjaGFyYWN0ZXIpICU+JSAKICAgICAgICAgICAgICBkaXN0aW5jdCgpICU+JSAKICAgICAgICAgICAgICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kMTJfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUgCiAgICAgICAgICAgICAgZGF0YS5mcmFtZSgpICU+JSAKICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlX2dyb3VwKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKSAlPiUKICBtdWx0aV9ib290KGNvbHVtbiA9ICJzY29yZSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2dyb3VwcyA9IGMoImFnZV9ncm91cCIsICJjaGFyYWN0ZXIiLCAiZmFjdG9yIiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoIm1lYW4iLCAiY2lfbG93ZXIiLCAiY2lfdXBwZXIiKSkKYGBgCgpgYGB7ciBzMTIgcmVncmVzc2lvbn0KdGVtcEMgPC0gZDEgJT4lIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihkMiAlPiUgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkpICU+JQogIGZ1bGxfam9pbihkYXRhLmZyYW1lKGVmYV9kMTJfYWxsX3JvdGF0ZWROJHNjb3JlcykgJT4lCiAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSAlPiUKICAgICAgICAgICAgICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgLXN1YmlkKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpLAogICAgICAgICBhZ2VfZ3JvdXAgPSBmYWN0b3IoYWdlX2dyb3VwKSwKICAgICAgICAgY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICMgJT4lCiAgIyBmaWx0ZXIoIWlzLm5hKGZhY3RvciksICFpcy5uYShhZ2VfZ3JvdXApLCAhaXMubmEoY2hhcmFjdGVyKSkKCmNvbnRyYXN0cyh0ZW1wQyRmYWN0b3IpID0gY2JpbmQoZmFjdG9yMSA9IGMoMSwgLTEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY3RvcjMgPSBjKDAsIC0xLCAxKSkKCmNvbnRyYXN0cyh0ZW1wQyRhZ2VfZ3JvdXApID0gY2JpbmQoY2hpbGRyZW4gPSBjKC0xLCAxKSkKY29udHJhc3RzKHRlbXBDJGNoYXJhY3RlcikgPSBjYmluZChyb2JvdCA9IGMoLTEsIDEpKQoKbGlicmFyeShsbWU0KQpyMSA8LSBsbWVyKHNjb3JlIH4gY2hhcmFjdGVyICogZmFjdG9yICogYWdlX2dyb3VwICsgKDEgfCBzdWJpZCkgLCB0ZW1wQykKc3VtbWFyeShyMSkKCiMgbGlicmFyeShicm1zKQojIHIxYiA8LSBicm0oc2NvcmUgfiBjaGFyYWN0ZXIgKiBmYWN0b3IgKiBhZ2VfZ3JvdXAgKyAoMSB8IHN1YmlkKSAsIHRlbXBDLAojICAgICAgICAgICAgIGZhbWlseSA9ICJnYXVzc2lhbiIpCiMgc3VtbWFyeShyMWIpCmBgYAoKYGBge3IgczEyIGZpZ3VyZSBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBncm91cCwgZmlnLndpZHRoID0gMTIsIGZpZy5oZWlnaHQgPSA2fQojIHBsb3QKZ2dwbG90KHNjb3Jlc19zMTJfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQm9kaWx5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQZXJjZXB0dWFsLWNvZ25pdGl2ZSIpKSwKICAgICAgICAgICAgICAgIGFnZV9ncm91cCA9IGZhY3RvcihhZ2VfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxldmVscyA9IGMoImFkdWx0cyIsICJjaGlsZHJlbl83OSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsYWJlbHMgPSBjKCJhZHVsdHMiLCAiY2hpbGRyZW4iKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY2hpbGRyZW5fNzkiLCAiYWR1bHRzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJjaGlsZHJlbiIsICJhZHVsdHMiKSkpLAogICAgICAgYWVzKHggPSBhZ2VfZ3JvdXAsIHkgPSBtZWFuLCBjb2xvciA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCgiZmFjdG9yIiwgbmNvbCA9IDMpICsKICB0aGVtZV9idygpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICsKICBnZW9tX3BvaW50KHNpemUgPSA1LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC40KSkgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgIHdpZHRoID0gMC4yLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC40KSkgKwogIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE5LCAxNSkpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgYWdlIGdyb3VwIiwKICAgICAgICMgc3VidGl0bGUgPSAiQWR1bHRzIChTdHVkeSAxKSB2cy4gY2hpbGRyZW4gKFN0dWR5IDIpXG4iLAogICAgICAgeCA9ICJBZ2UgZ3JvdXAiLAogICAgICAgeSA9ICJNZWFuIGZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCgojIyBTdHVkeSAzCgpgYGB7ciBzMyBmaWd1cmUgc2V0dXAsIGluY2x1ZGUgPSBGfQpzY29yZXNfczNfcGxvdHRpbmcgPC0gZDMgJT4lIAogIHNlbGVjdChzdWJpZCwgYWdlX2dyb3VwLCBjaGFyYWN0ZXIpICU+JSAKICBkaXN0aW5jdCgpICU+JSAKICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSAlPiUKICBmdWxsX2pvaW4oZWZhX2QzX2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lIAogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUgCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgIWlzLm5hKHNjb3JlX0YzKSwgIWlzLm5hKGFnZV9ncm91cCkpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCBzdGFydHNfd2l0aCgic2NvcmVfIikpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yKSkgJT4lCiAgbXVsdGlfYm9vdChjb2x1bW4gPSAic2NvcmUiLAogICAgICAgICAgICAgc3VtbWFyeV9ncm91cHMgPSBjKCJhZ2VfZ3JvdXAiLCAiY2hhcmFjdGVyIiwgImZhY3RvciIpLAogICAgICAgICAgICAgc3RhdGlzdGljc19mdW5jdGlvbnMgPSBjKCJtZWFuIiwgImNpX2xvd2VyIiwgImNpX3VwcGVyIikpCmBgYAoKYGBge3IgczMgZmlndXJlIGZhY3RvciBzY29yZXMgYnkgY2hhcmFjdGVyLCBmaWcud2lkdGggPSAxMiwgZmlnLmhlaWdodCA9IDZ9CmdncGxvdChzY29yZXNfczNfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHlfYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHkgYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSwKICAgICAgICAgICAgICAgIGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2NvcmVfRjIiLCAic2NvcmVfRjEiLCAic2NvcmVfRjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwgIkJvZGlseSIsICJQZXJjZXB0dWFsLWNvZ25pdGl2ZSIpKSksCiAgICAgICBhZXMoeCA9IGNoYXJhY3RlciwgeSA9IG1lYW4sIGNvbG9yID0gY2hhcmFjdGVyLCBzaGFwZSA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKH4gZmFjdG9yLCBuY29sID0gMykgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsKICBnZW9tX3BvaW50KHNpemUgPSA1LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC40KSkgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwgCiAgICAgICAgICAgICAgICB3aWR0aCA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNCkpICsKICAjIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgIiNGODc2NkQiLCByZXAoImJsYWNrIiwgNCkpKSArCiAgIyBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxNywgMTUsIDE5LCByZXAoMTcsIDQpKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgcmVwKCJncmF5IiwgMiksICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE3LCAxNSwgcmVwKDE3LCAyKSwgMTksIHJlcCgxNywgNCkpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGNoYXJhY3RlciIsCiAgICAgICB4ID0gIkNoYXJhY3RlciIsCiAgICAgICB5ID0gIk1lYW4gZmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAKCgojIyBTdHVkaWVzIDMtNAoKYGBge3IgczM0IGFsbCBubyByb3RhdGlvbiwgaW5jbHVkZSA9IEZ9CiMgbWFrZSBjb21iaW5lZCBkYXRhc2V0CmQzNF9hbGwgPC0gZDNfYWxsICU+JSByb3duYW1lc190b19jb2x1bW4oInN1YmlkIikgJT4lCiAgZnVsbF9qb2luKGQ0X2FsbCAlPiUgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoInN1YmlkIikKCiMgZXhhbWluZSBzY3JlZSBwbG90CmZhLnBhcmFsbGVsKGQzNF9hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDM0X2FsbF91bnJvdGF0ZWQgPC0gZmEoZDM0X2FsbCwgMTMsIHJvdGF0ZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QzNF9hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2QzNF9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzIDwtIHByaW50KGVmYV9kMzRfYWxsX3Vucm90YXRlZCkkVmFjY291bnRlZCAlPiUKICB0KCkgJT4lCiAgZGF0YS5mcmFtZSgpCgojIGNvdW50IGZhY3RvcnMgd2l0aCBlaWdlbnZhbHVlcyA+IDEgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCA+IDUlCmVmYV9kMzRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDM0X2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgJT4lCiAgZmlsdGVyKFNTLmxvYWRpbmdzID4gMSwgUHJvcG9ydGlvbi5FeHBsYWluZWQgPiAwLjA1KSAlPiUKICBjb3VudCgpICU+JQogIGFzLm51bWVyaWMoKQplZmFfZDM0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMKYGBgCgpgYGB7ciBzMzQgYWxsIHJvdGF0aW9uLCBpbmNsdWRlID0gRn0KZWZhX2QzNF9hbGxfcm90YXRlZF9tYXggPC0gZmEoZDM0X2FsbCwgMTMsIHJvdGF0ZSA9IGNob3NlblJvdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCgplZmFfZDM0X2FsbF9yb3RhdGVkIDwtIGZhKGQzNF9hbGwsIGVmYV9kMzRfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kMzRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgPC0gZmEuc29ydChsb2FkaW5ncyhlZmFfZDM0X2FsbF9yb3RhdGVkKVtdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSkgJT4lCiAgbXV0YXRlKGxvYWRpbmdfYWJzID0gYWJzKGxvYWRpbmcpKSAlPiUKICBncm91cF9ieShjYXBhY2l0eSkgJT4lCiAgdG9wX24oMSwgbG9hZGluZ19hYnMpICU+JQogIHVuZ3JvdXAoKQplZmFfZDM0X2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2QzNF9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKQoKIyBzZXQgbnVtYmVyIG9mIGZhY3RvcnMgdG8gZXh0cmFjdApuZmFjdG9yc19kMzRfYWxsIDwtIGVmYV9kMzRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2QzNF9hbGwKYGBgCgpgYGB7ciBzMzQgYWxsIHZhcmltYXggcm90YXRpb24sIGluY2x1ZGUgPSBGfQojIHJ1biBFRkEgd2l0aCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDM0X2FsbF9yb3RhdGVkTiA8LSBmYShkMzRfYWxsLCBuZmFjdG9yc19kMzRfYWxsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JlcyA9ICJ0ZW5CZXJnZSIsIG1pc3NpbmcgPSBUUlVFKSAjIGltcHV0ZSBtaXNzaW5nIHZhbHVlcwpwcmludChlZmFfZDM0X2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDM0X2FsbF9yb3RhdGVkTl9sb2FkaW5ncyA8LSBsb2FkaW5ncyhlZmFfZDM0X2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lIAogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiY2FwYWNpdHkiKQpgYGAKCmBgYHtyIHMzNCBsb2FkaW5ncyB0YWJsZSwgaW5jbHVkZSA9IEZ9CmRhdGEuZnJhbWUobG9hZGluZ3MoZmEuc29ydChlZmFfZDM0X2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCmBgYHtyIHMzNCBmaWd1cmUgc2V0dXAsIGluY2x1ZGUgPSBGfQpzY29yZXNfczM0X3Bsb3R0aW5nIDwtIGQzICU+JSAKICBzZWxlY3Qoc3ViaWQsIGFnZV9ncm91cCwgY2hhcmFjdGVyKSAlPiUgCiAgZGlzdGluY3QoKSAlPiUgCiAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGQ0ICU+JSAKICAgICAgICAgICAgICBzZWxlY3Qoc3ViaWQsIGFnZV9ncm91cCwgY2hhcmFjdGVyKSAlPiUgCiAgICAgICAgICAgICAgZGlzdGluY3QoKSAlPiUgCiAgICAgICAgICAgICAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkpICU+JQogIGZ1bGxfam9pbihlZmFfZDM0X2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lIAogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUgCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgIWlzLm5hKHNjb3JlX0YzKSwgIWlzLm5hKGFnZV9ncm91cCkpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCBzdGFydHNfd2l0aCgic2NvcmVfIikpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yKSkgJT4lCiAgbXVsdGlfYm9vdChjb2x1bW4gPSAic2NvcmUiLAogICAgICAgICAgICAgc3VtbWFyeV9ncm91cHMgPSBjKCJhZ2VfZ3JvdXAiLCAiY2hhcmFjdGVyIiwgImZhY3RvciIpLAogICAgICAgICAgICAgc3RhdGlzdGljc19mdW5jdGlvbnMgPSBjKCJtZWFuIiwgImNpX2xvd2VyIiwgImNpX3VwcGVyIikpCmBgYAoKYGBge3IgczM0IGZpZ3VyZSBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBncm91cCwgZmlnLndpZHRoID0gMTIsIGZpZy5oZWlnaHQgPSA2fQojIHBsb3QKZ2dwbG90KHNjb3Jlc19zMzRfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHlfYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoImNvbXB1dGVyIiwgInJvYm90IiwgImRvbGwiLCAidGVkZHkgYmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVldGxlIiwgImJpcmQiLCAibW91c2UiLCAiZ29hdCIsICJlbGVwaGFudCIpKSwKICAgICAgICAgICAgICAgIGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2NvcmVfRjIiLCAic2NvcmVfRjEiLCAic2NvcmVfRjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwgIkJvZGlseSIsICJQZXJjZXB0dWFsLWNvZ25pdGl2ZSIpKSwKICAgICAgICAgICAgICAgIGFnZV9ncm91cCA9IGZhY3RvcihhZ2VfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjaGlsZHJlbl80NiIsICJjaGlsZHJlbl83OSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiNC02eSIsICI3LTl5IikpKSwKICAgICAgIGFlcyh4ID0gY2hhcmFjdGVyLCB5ID0gbWVhbiwgY29sb3IgPSBjaGFyYWN0ZXIsIHNoYXBlID0gYWdlX2dyb3VwKSkgKwogIGZhY2V0X3dyYXAofiBmYWN0b3IsIG5jb2wgPSAzKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgZ2VvbV9wb2ludChzaXplID0gNSwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNCkpICsKICBnZW9tX2Vycm9yYmFyKGFlcyh5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksIAogICAgICAgICAgICAgICAgd2lkdGggPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjQpKSArCiAgIyBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTcsIDE1LCAxOSwgcmVwKDE3LCA0KSkpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSksCiAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgY2hhcmFjdGVyIGFuZCBhZ2UgZ3JvdXAiLAogICAgICAgeCA9ICJDaGFyYWN0ZXIiLAogICAgICAgeSA9ICJNZWFuIGZhY3RvciBzY29yZSIsCiAgICAgICBzaGFwZSA9ICJBZ2UgZ3JvdXA6ICIpICMgMTAwMCBieSA1MDAKYGBgCgojIEZhY3RvciBzY29yZXMgYnkgYWdlCgojIyBTdHVkeSAxCgpgYGB7ciBzMSBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBzZXR1cCwgZmlnLndpZHRoID0gMTIsIGZpZy5oZWlnaHQgPSA2fQpzY29yZXNfczFfcGxvdHRpbmcgPC0gZDEgJT4lIAogIHNlbGVjdChzdWJpZCwgYWdlLCBjaGFyYWN0ZXIpICU+JSAKICBkaXN0aW5jdCgpICU+JSAKICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSAlPiUKICBmdWxsX2pvaW4oZWZhX2QxX2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lIAogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUgCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgIWlzLm5hKHNjb3JlX0YzKSwgIWlzLm5hKGFnZSkpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCBzdGFydHNfd2l0aCgic2NvcmVfIikpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yKSkKCmdncGxvdChzY29yZXNfczFfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2NvcmVfRjIiLCAic2NvcmVfRjEiLCAic2NvcmVfRjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpKSwKICAgICAgIGFlcyh4ID0gYWdlLCB5ID0gc2NvcmUsIGNvbG9yID0gY2hhcmFjdGVyLCBmaWxsID0gY2hhcmFjdGVyLCBzaGFwZSA9IGNoYXJhY3RlcikpICsKICBmYWNldF93cmFwKCJmYWN0b3IiLCBuY29sID0gMykgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDI4KSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsKICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxOSwgMTUpKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3Igc2NvcmVzIGJ5IGFkdWx0cycgYWdlIiwKICAgICAgICMgc3VidGl0bGUgPSAiQWR1bHRzIChTdHVkeSAxKVxuIiwKICAgICAgIHggPSAiQWdlICh5ZWFycykiLAogICAgICAgeSA9ICJGYWN0b3Igc2NvcmUiKSAjIDEwMDAgYnkgNTAwCmBgYAoKIyMgU3R1ZHkgMgoKYGBge3IgczIgZmFjdG9yIHNjb3JlcyBieSBhZ2Ugc2V0dXAsIGZpZy53aWR0aCA9IDEyLCBmaWcuaGVpZ2h0ID0gNn0Kc2NvcmVzX3MyX3Bsb3R0aW5nIDwtIGQyICU+JSAKICBzZWxlY3Qoc3ViaWQsIGFnZSwgY2hhcmFjdGVyKSAlPiUgCiAgZGlzdGluY3QoKSAlPiUgCiAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kMl9hbGxfcm90YXRlZE4kc2NvcmVzICU+JSAKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lIAogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigic3ViaWQiKSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIpKSAlPiUKICByZW5hbWUoc2NvcmVfRjEgPSBNUjEsIHNjb3JlX0YyID0gTVIyLCBzY29yZV9GMyA9IE1SMykgJT4lCiAgZmlsdGVyKCFpcy5uYShzY29yZV9GMSksICFpcy5uYShzY29yZV9GMiksICFpcy5uYShzY29yZV9GMyksICFpcy5uYShhZ2UpKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBzY29yZSwgc3RhcnRzX3dpdGgoInNjb3JlXyIpKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvcikpCgpnZ3Bsb3Qoc2NvcmVzX3MyX3Bsb3R0aW5nICU+JQogICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvZGlseSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSkpLAogICAgICAgYWVzKHggPSBhZ2UsIHkgPSBzY29yZSwgY29sb3IgPSBjaGFyYWN0ZXIsIGZpbGwgPSBjaGFyYWN0ZXIsIHNoYXBlID0gY2hhcmFjdGVyKSkgKwogIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG9lc3MiLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9wb2ludChzaXplID0gMikgKwogIHNjYWxlX3NoYXBlX21hbnVhbCh2YWx1ZXMgPSBjKDE5LCAxNSkpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgY2hpbGRyZW4ncyBhZ2UiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJDaGlsZHJlbiAoU3R1ZHkgMilcbiIsCiAgICAgICB4ID0gIkFnZSAoeWVhcnMpIiwKICAgICAgIHkgPSAiRmFjdG9yIHNjb3JlIikgIyAxMDAwIGJ5IDUwMApgYGAKCiMjIFN0dWRpZXMgMS0yCgpgYGB7ciBzMTIgc2NhdHRlciBwbHVzIG1lYW4gc2NvcmVzIGJ5IGFnZSBzZXR1cCwgZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSA2fQp0ZW1wQSA8LSBkMiAlPiUgCiAgc2VsZWN0KHN1YmlkLCBhZ2UsIGNoYXJhY3RlcikgJT4lIAogIGRpc3RpbmN0KCkgJT4lIAogIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNoYXJhY3Rlciwgc3ViaWQsIHNlcCA9ICJfIikpICU+JQogIGZ1bGxfam9pbihlZmFfZDEyX2FsbF9yb3RhdGVkTiRzY29yZXMgJT4lIAogICAgICAgICAgICAgIGRhdGEuZnJhbWUoKSAlPiUgCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIHJlbmFtZShzY29yZV9GMSA9IE1SMSwgc2NvcmVfRjIgPSBNUjIsIHNjb3JlX0YzID0gTVIzKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNjb3JlX0YxKSwgIWlzLm5hKHNjb3JlX0YyKSwgIWlzLm5hKHNjb3JlX0YzKSwgIWlzLm5hKGFnZSkpICU+JQogIGdhdGhlcihmYWN0b3IsIHNjb3JlLCBzdGFydHNfd2l0aCgic2NvcmVfIikpICU+JQogIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiU29jaWFsLWVtb3Rpb25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyY2VwdHVhbC1jb2duaXRpdmUiKSkpCgp0ZW1wQiA8LSBzY29yZXNfczEyX3Bsb3R0aW5nICU+JQogIGZpbHRlcihhZ2VfZ3JvdXAgPT0gImFkdWx0cyIpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlNvY2lhbC1lbW90aW9uYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQm9kaWx5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpLAogICAgICAgICBhZ2UgPSAxMSkgCgpnZ3Bsb3QodGVtcEEsCiAgICAgICBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBjb2xvciA9IGNoYXJhY3RlciwgZmlsbCA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgZmFjZXRfd3JhcCgiZmFjdG9yIiwgbmNvbCA9IDMpICsKICB0aGVtZV9idygpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAyOCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgIyBnZW9tX3Ntb290aChtZXRob2QgPSAibG9lc3MiLCBhbHBoYSA9IDAuNCkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGFscGhhID0gMC40KSArCiAgZ2VvbV9wb2ludChzaXplID0gMikgKwogIGdlb21fcG9pbnQoZGF0YSA9IHRlbXBCLCBhZXMoeSA9IG1lYW4pLAogICAgICAgICAgICAgc2l6ZSA9IDQsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpKSArCiAgZ2VvbV9lcnJvcmJhcihkYXRhID0gdGVtcEIsIGFlcyh5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciwgeSA9IG1lYW4pLCB3aWR0aCA9IDAuNCwKICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpKSArCiAgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTksIDE1KSkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBjKDc6MTEpLCBsYWJlbHMgPSBjKCI3eSIsICI4eSIsICI5eSIsICIxMHkiLCAiYWR1bHRzIikpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgYWdlIiwKICAgICAgICMgc3VidGl0bGUgPSAiQ2hpbGRyZW4gKFN0dWR5IDIpXG4iLAogICAgICAgeCA9ICJBZ2UiLAogICAgICAgeSA9ICJGYWN0b3Igc2NvcmUiKSAjIDEwMDAgYnkgNTAwCmBgYAoKIyMgU3R1ZGllcyAzLTQKCmBgYHtyIHMzNCBmYWN0b3Igc2NvcmVzIGJ5IGFnZSBzZXR1cCwgZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSAyMH0Kc2NvcmVzX3MzNF9wbG90dGluZyA8LSBkMyAlPiUKICBzZWxlY3QoYWdlX2dyb3VwLCBzdWJpZCwgYWdlLCBjaGFyYWN0ZXIpICU+JQogIGRpc3RpbmN0KCkgJT4lCiAgbXV0YXRlKHN1YmlkID0gcGFzdGUoY2hhcmFjdGVyLCBzdWJpZCwgc2VwID0gIl8iKSkgJT4lCiAgZnVsbF9qb2luKGQ0ICU+JQogICAgICAgICAgICAgIHNlbGVjdChhZ2VfZ3JvdXAsIHN1YmlkLCBhZ2UsIGNoYXJhY3RlcikgJT4lCiAgICAgICAgICAgICAgZGlzdGluY3QoKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoc3ViaWQgPSBwYXN0ZShjaGFyYWN0ZXIsIHN1YmlkLCBzZXAgPSAiXyIpKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9kMzRfYWxsX3JvdGF0ZWROJHNjb3JlcyAlPiUKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpKSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlcikpICU+JQogIG11dGF0ZShhZ2UgPSBpZmVsc2UoYWdlIDwgMy41LCBOQSwgYWdlKSkgJT4lCiAgcmVuYW1lKHNjb3JlX0YxID0gTVIxLCBzY29yZV9GMiA9IE1SMiwgc2NvcmVfRjMgPSBNUjMpICU+JQogIGZpbHRlcighaXMubmEoc2NvcmVfRjEpLCAhaXMubmEoc2NvcmVfRjIpLCAhaXMubmEoc2NvcmVfRjMpLCAhaXMubmEoYWdlKSkgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIHN0YXJ0c193aXRoKCJzY29yZV8iKSkgJT4lCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IpKQoKZ2dwbG90KHNjb3Jlc19zMzRfcGxvdHRpbmcgJT4lCiAgICAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgICAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2NvcmVfRjMiLCAic2NvcmVfRjEiLCAic2NvcmVfRjIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJTb2NpYWwtZW1vdGlvbmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2RpbHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcmNlcHR1YWwtY29nbml0aXZlIikpLAogICAgICAgICAgICAgICAgY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb21wdXRlciIsICJyb2JvdCIsICJkb2xsIiwgInRlZGR5X2JlYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlZXRsZSIsICJiaXJkIiwgIm1vdXNlIiwgImdvYXQiLCAiZWxlcGhhbnQiKSkpLAogICAgICAgIyBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBjb2xvciA9IGNoYXJhY3RlciwgZmlsbCA9IGNoYXJhY3Rlciwgc2hhcGUgPSBjaGFyYWN0ZXIpKSArCiAgICAgICBhZXMoeCA9IGFnZSwgeSA9IHNjb3JlLCBncm9wdSA9IGFnZV9ncm91cCkpICsKICAjIGZhY2V0X3dyYXAoImZhY3RvciIsIG5jb2wgPSAzKSArCiAgIyBmYWNldF9ncmlkKGZhY3RvciB+IGNoYXJhY3RlcikgKwogIGZhY2V0X2dyaWQoY2hhcmFjdGVyIH4gZmFjdG9yKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjgpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgYWxwaGEgPSAwLjQpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBhbHBoYSA9IDAuNCkgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQsIGZvcm11bGEgPSB5IH4gcG9seSh4LCAyKSkgKwogICMgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWxwaGEgPSAwLjQsIGZvcm11bGEgPSB5IH4gcG9seSh4LCAzKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDIsIDEyLCAyKSkgKwogICMgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiIzAwQkZDNCIsIHJlcCgiZ3JheSIsIDIpLCAiI0Y4NzY2RCIsIHJlcCgiYmxhY2siLCA0KSkpICsKICAjIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICIjMDBCRkM0IiwgcmVwKCJncmF5IiwgMiksICIjRjg3NjZEIiwgcmVwKCJibGFjayIsIDQpKSkgKwogICMgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoMTcsIDE1LCByZXAoMTcsIDIpLCAxOSwgcmVwKDE3LCA0KSkpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBzY29yZXMgYnkgY2hpbGRyZW4ncyBhZ2UiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJDaGlsZHJlbiAoU3R1ZGllcyAzLTQpXG4iLAogICAgICAgeCA9ICJBZ2UgKHllYXJzKSIsCiAgICAgICB5ID0gIkZhY3RvciBzY29yZSIpICMgMTAwMCBieSA1MDAKYGBgCgo=